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]