我有一个像
这样的Pandas DataFramedf = pd.DataFrame([[1,-2,-3],[4,5,6],[1,3,4]])
看起来像
0 1 2
0 1 -2 -3
1 4 5 6
2 1 3 4
我想获得此数据框的子集,只有负值
1 2
0 -2 -3
我想尝试布尔索引(但我不知道如何使用2维布尔索引)
In [7]: df_flag = df < 0
In [8]: df_flag
Out[8]:
0 1 2
0 False True True
1 False False False
2 False False False
所以我做了
In [15]: df[df_flag]
Out[15]:
0 1 2
0 NaN -2 -3
1 NaN NaN NaN
2 NaN NaN NaN
使用2维布尔索引时,是否有办法(自动)删除充满NaN的列和行?
答案 0 :(得分:1)
您可以拨打dropna
两次来电,dropna
接受一个thresh
参数,如果有n
个非Na值,则该参数不会丢弃整个轴所以下面会删除行然后列:
In [283]:
df[df<0].dropna(axis=0, thresh=1).dropna(axis=1)
Out[283]:
1 2
0 -2 -3
第一个dropna
:
In [284]:
df[df<0].dropna(axis=0, thresh=1)
Out[284]:
0 1 2
0 NaN -2 -3
<强>更新强>
axis
param接受多个args,所以实际上你可以一次调用,谢谢@scls:
In [285]:
df[df<0].dropna(axis=[0,1], thresh=1)
Out[285]:
1 2
0 -2 -3