web-dev-qa-db-ja.com

pandasでは、dropnaを使用してNANをドロップできません

pandasをpdとしてインポートし、以下のコードを実行して、次の結果を取得します

コード:

traindataset = pd.read_csv('/Users/train.csv')
print traindataset.dtypes
print traindataset.shape
print traindataset.iloc[25,3]
traindataset.dropna(how='any')
print traindataset.iloc[25,3]
print traindataset.shape

出力

TripType                   int64  
VisitNumber                int64  
Weekday                   object  
Upc                      float64  
ScanCount                  int64  
DepartmentDescription     object  
FinelineNumber           float64  
dtype: object

(647054, 7)

nan  
nan

(647054, 7) 
[Finished in 2.2s]

結果から、行番号は変更されず、データフレームにNANが残っているため、ドロップナ線は機能しません。それはどうしてですか?今、私は狂気です。

8
fangh

これは私の最初の投稿です。私はこの正確な問題をデバッグするのに数時間を費やしただけで、この問題を修正した方法を共有したいと思います。

私はデータフレーム全体を文字列に変換してから、下に表示されているものと同様のコードを使用して、その値をデータフレームに戻しました(以下のコードは値を文字列に変換するだけです)

_row_counter = 0
for ind, row in dataf.iterrows():
    cell_value = str(row['column_header'])
    dataf.loc[row_counter, 'column_header'] = cell_value
    row_counter += 1
_

データフレーム全体を文字列に変換した後、dropna()関数を使用しました。以前はNaNであった値(パンダによってnull値と見なされていました)は、文字列_'nan'_に変換されました。

結論として、CSVでデータの操作とデータタイプの変換を開始する前に、最初に空白の値を削除します。

1
Robert Forderer