Pandas Python,根据行条件选择列

han*_*ick 6 python conditional-statements dataframe pandas

我有一个数据框:

import pandas as pd
df = pd.DataFrame(np.random.randn(2, 4))
print(df)
          0         1         2         3
0  1.489198  1.329603  1.590124  1.123505
1  0.024017  0.581033  2.500397  0.156280
Run Code Online (Sandbox Code Playgroud)

我想选择至少有一行值大于的列2。我尝试了以下操作,但是没有按预期工作。

df[df.columns[df.iloc[(0,1)]>2]]
Run Code Online (Sandbox Code Playgroud)

在这个玩具示例中,我的预期输出为:

       2
1.590124  
2.500397 
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 7

使用gtany过滤df:

In [287]:
df.ix[:,df.gt(2).any()]

Out[287]:
          2
0  1.590124
1  2.500397
Run Code Online (Sandbox Code Playgroud)

这里我们ix用来选择所有行,第一个:和下一个arg是满足条件的列的布尔掩码:

In [288]:
df.gt(2)

Out[288]:
       0      1      2      3
0  False  False  False  False
1  False  False   True  False

In [289]:
df.gt(2).any()

Out[289]:
0    False
1    False
2     True
3    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

在您的示例中,您要做的是选择第一行和第二列的单元格值,然后尝试使用此值来掩盖列,但这只是返回了第一列,因此为什么它不起作用:

In [291]:
df.iloc[(0,1)]

Out[291]:
1.3296030000000001

In [293]:
df.columns[df.iloc[(0,1)]>2]

Out[293]:
'0'
Run Code Online (Sandbox Code Playgroud)