Mat*_*teo 2 python dataframe pandas
我有以下 df
AAA BBB CCC DDD ID1 ID2 ID3 ID4
0 txt txt txt txt 10 NaN 12 NaN
1 txt txt txt txt 10 NaN 12 13
2 txt txt txt txt NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
具有以下 dtypes
AAA object
BBB object
CCC object
DDD object
ID1 float64
ID2 float64
ID3 float64
ID4 float64
Run Code Online (Sandbox Code Playgroud)
有没有办法仅当所有浮点列均为 NaN 时才删除行?
输出:
AAA BBB CCC DDD ID1 ID2 ID3 ID4
0 txt txt txt txt 10 NaN 12 NaN
1 txt txt txt txt 10 NaN 12 13
Run Code Online (Sandbox Code Playgroud)
我无法使用 df.dropna(subset=['ID1','ID2','ID3','ID4']) 做到这一点,因为我真正的 df 有几个动态浮动列。
谢谢
使用DataFrame.select_dtypesfor 获取所有浮点列,然后测试非缺失值并选择DataFrame.any每行至少一个非缺失值 - 因此删除缺失的浮点行:
df1 = df[df.select_dtypes(float).notna().any(axis=1)]
print (df1)
AAA BBB CCC DDD ID1 ID2 ID3 ID4
0 txt txt txt txt 10.0 NaN 12.0 NaN
1 txt txt txt txt 10.0 NaN 12.0 13.0
Run Code Online (Sandbox Code Playgroud)
您的解决方案DataFrame.dropna应该更改为传递浮动列和how='all'测试参数(如果每NaN行都为 s):
df1 = df.dropna(subset=df.select_dtypes(float).columns, how='all')
#for return same dataframe
#df.dropna(subset=df.select_dtypes(float).columns, how='all', inplace=True)
Run Code Online (Sandbox Code Playgroud)
如果可能的话,通过以下方式检查多种类型的浮点数np.floating:
df1 = df.dropna(subset=df.select_dtypes(np.floating).columns, how='all')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |