我的熊猫数据框结构如下:
In[1]: df = pd.DataFrame({"A":[10, 15, 13, 18, 0.6],
"B":[20, 12, 16, 24, 0.5],
"C":[23, 22, 26, 24, 0.4],
"D":[9, 12, 17, 24, 0.8 ]})
Out[1]: df
A B C D
0 10.0 20.0 23.0 9.0
1 15.0 12.0 22.0 12.0
2 13.0 16.0 26.0 17.0
3 18.0 24.0 24.0 24.0
4 0.6 0.5 0.4 0.8
从这里开始,我的目标是根据最后一行(索引4)的值过滤多个列。更详细地讲,我需要在最后一行中保留值<0.06的那些列。输出应为如下所示的df:
B C
0 20.0 23.0
1 12.0 22.0
2 16.0 26.0
3 24.0 24.0
4 0.5 0.4
我正在尝试:
In[2]: df[(df[["A", "B", "C", "D"]] < 0.6)]
但是我得到如下信息:
Out[2]:
A B C D
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 NaN NaN NaN NaN
4 NaN 0.5 0.4 NaN
我什至尝试:
df[(df[["A", "B", "C", "D"]] < 0.6).all(axis=0)]
但是它给我错误,它不起作用。
有人可以帮助我吗?
答案 0 :(得分:3)
将DataFrame.loc
与:
一起使用可按条件返回所有行-通过DataFrame.iloc
比较最后一行:
df1 = df.loc[:, df.iloc[-1] < 0.6]
print (df1)
B C
0 20.0 23.0
1 12.0 22.0
2 16.0 26.0
3 24.0 24.0
4 0.5 0.4