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が残っているため、ドロップナ線は機能しません。それはどうしてですか?今、私は狂気です。
これは私の最初の投稿です。私はこの正確な問題をデバッグするのに数時間を費やしただけで、この問題を修正した方法を共有したいと思います。
私はデータフレーム全体を文字列に変換してから、下に表示されているものと同様のコードを使用して、その値をデータフレームに戻しました(以下のコードは値を文字列に変換するだけです)
_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でデータの操作とデータタイプの変換を開始する前に、最初に空白の値を削除します。