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)
使用gt和any过滤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)
| 归档时间: |
|
| 查看次数: |
7189 次 |
| 最近记录: |