Python 沿列而非行的数据框布尔选择
假设我有以下数据帧:Python 沿列而非行的数据框布尔选择,python,pandas,Python,Pandas,假设我有以下数据帧: a b c d 0 0.049531 0.408824 0.975756 0.658347 1 0.981644 0.520834 0.258911 0.639664 2 0.641042 0.534873 0.806442 0.066625 3 0.764057 0.063252 0.256748 0.045850 我只需要第0行中的值大于0.5的列的子集。我可以这样做
a b c d
0 0.049531 0.408824 0.975756 0.658347
1 0.981644 0.520834 0.258911 0.639664
2 0.641042 0.534873 0.806442 0.066625
3 0.764057 0.063252 0.256748 0.045850
我只需要第0行中的值大于0.5的列的子集。我可以这样做:
df2 = df.T
myResult = df2[df2.iloc[:, 0] > 0.5].T
但这感觉像一个可怕的黑客。有没有更好的方法对列进行布尔索引?我可以在某个地方指定轴参数?另一种看待答案的方式:
In [14]: df.T[df.T[0] > 0.5].T
Out[14]:
c d
0 0.975756 0.658347
1 0.258911 0.639664
2 0.806442 0.066625
3 0.256748 0.045850
另一种不使用转置的方法是创建一个布尔掩码,确定第一行的值是否大于0.5,然后删除带有阈值的NaN,最后列出df列以过滤原始df。这是相当模糊的;) 这个怎么样
df.loc[:, df.iloc[0, :] > 0.5]
我相信你已经找到了最优雅的方法。三重转置可能没有你的答案那么优雅。是的,这正是我想要的。
df.loc[:, df.iloc[0, :] > 0.5]