2017-12-10 24 views
0

ご協力いただきありがとうございます。Pandasでセルが空の行を削除しますか?

私は大きなcsv pseuodo-patientデータセットを持っています。一般に、このように見えます。

Average Covered Charges , Total Discharges , Average Medicare Payments 
     32963.07   ,   91  ,   4763.73 
     15131.85   ,   14  ,   4976.71 
     37560.37   ,     ,   

私が直面しています問題は、私は100よりも大きい放電の合計数を取得しようとしていますということです...しかし、いずれかの列は、他のすべての細胞よりも終わりに1つのより多くの価値を持っているので、他の列の最後のセルに空白があり、データセットの長さの項目としてカウントされます。私はこのcsvファイルをpandasデータフレームにロードしました。そして、私はNAを削除しました。私のデータセットはまだこのように見えます。

NAs、Noneなどは問題ではありません。最後の2つの列にデータ型 "object"があり、空白/空白があるため、 "object"データ型を "int"に変更することはできません。

私のデータフレームをのように見えるように変更すると、空のセルがあるデータセット内のすべての行が削除されます。はすべての問題になります。だから私はこのように私のデータセットを希望:私は、そのような苦労はこれをやったんだということに驚い

Average Covered Charges , Total Discharges , Average Medicare Payments 
     32963.07   ,   91  ,   4763.73 
     15131.85   ,   14  ,   4976.71 

。しかし、私がパンダについて読んだことから、ドキュメンテーションはそれらがNAであると仮定しているので、私はそれらを落とすことができますが、私はパンダに全くそれを信じさせることはできません。

import pandas as pd 
    inpatients_df = pd.read_csv("inpatient_payment_system.csv", low_memory = False) 

    inpatients_df.dropna(axis = 0, how = 'any') # Remove NA values. 

私はすでにデータセットにロードされ、それが重要好きではない、すべてのNASを削除しました。

注:このデータセットには3つ以上の列があります。このためには、1つの列に他の列より多くのエントリーが必要です。問題は実際にはcsvファイルの最後の行にあります。

+0

各行は必ずしも同じ患者を意味するのでしょうか?たとえば、 '32963.07、91、4763.73'という行は、一人の人のためのものですか?そうでなければ、DataFrameに格納すべきではありません。代わりに、各列はそれ自身の別々のシリーズでなければなりません。 – Sebastian

+0

それはそれぞれの臨床的訪問です。同じ患者が別の時間に来て、自分の住所または保険会社を変更した場合、それは新しい行になります。それは本当に重要な問題ではありません。 – xyz123

+0

次に、列の最後に欠損値があるのはなぜですか?それが重要な問題です。 – Sebastian

答えて

1

ジャストシリーズなどのいずれかの列を取得し、それに動作します:

df[df['Total Discharges'].str.isnumeric()] 

pd.to_numeric(df['Total Discharges'], errors='coerce').dropna() > 100).sum() 
+0

OPが言ったように、彼はnansではなく空文字列に問題はありません。 – Dark

+0

あなたのコードを動作させることができません。私がそれを実行すると、 "TypeError: '>' str 'と' int 'のインスタンス間ではサポートされません。私が言ったように、私はそれがナだと信じさせるパンダを得る。 – xyz123

+0

これを反映するように編集されました。 – Sebastian

1

この特定のケースでは、あなたが適切なスライスを得るために.isnumeric()メソッドを使用する必要がありますしかし、あなたの質問に答えるためには、空であると思われる項目は空文字列なのかもしれません。

df[df['Total Discharges'] != ''] 

はそのトリックを行う必要がありますが、そのセルの値を明示的にチェックして確認してください。

0

はこれを試してみてください:

inpatients_df.dropna(subset=['Total Discharges'], how='all', inplace = True) 
関連する問題