目前我的数据如下:
df_all.head()
Out[2]:
Unnamed: 0 Symbol Date Close Weight
0 4061 A 2016-01-13 36.515889 (0.000002)
1 4062 AA 2016-01-14 36.351784 0.000112
2 4063 AAC 2016-01-15 36.351784 (0.000004)
3 4064 AAL 2016-01-19 36.590483 0.000006
4 4065 AAMC 2016-01-20 35.934062 0.000002
df_all.tail()
Out[3]:
Unnamed: 0 Symbol Date Close Weight
1252498 26950320 nan NaT 9.84 NaN
1252499 26950321 nan NaT 10.26 NaN
1252500 26950322 nan NaT 9.99 NaN
1252501 26950323 nan NaT 9.11 NaN
1252502 26950324 nan NaT 9.18 NaN
df_all.dtypes
Out[4]:
Unnamed: 0 int64
Symbol object
Date datetime64[ns]
Close float64
Weight object
dtype: object
可以看出,我在符号纳米,纳特为日期和NaN的重量值。
我的目标:我想要移除任何包含任何包含nan,Nat或NaN的列并且有一个新的df_clean作为结果的行
我似乎无法应用适当的过滤器?我不确定是否必须首先转换数据类型(尽管我也试过了)
答案 0 :(得分:4)
您可以使用
df_all.replace({'nan': None})[~pd.isnull(df_all).any(axis=1)]
这是因为isnull
同时将NaN
和NaT
识别为" null"值。
答案 1 :(得分:0)
因此,nan'
或dropna()
未捕获符号“isnull()
”。您需要将符号'nan'
转换为np.nan
试试这个:
df["symbol"] = np.where(df["symbol"]=='nan',np.nan, df["symbol"] )
df.dropna()