Fou*_*ier 5 python boolean dataframe pandas
我有一个数据框(df),其中包含几列具有实际测量值的列,而这些列中的每一列都具有不确定性(dA,dB,...)的相应列数(A,B,...):
A B dA dB
0 -1 3 0.31 0.08
1 2 -4 0.263 0.357
2 5 5 0.382 0.397
3 -4 -0.5 0.33 0.115
Run Code Online (Sandbox Code Playgroud)
我应用了一个函数来根据我的定义在测量列中查找有效的值
df[["A","B"]].apply(lambda x: x.abs()-5*df['d'+x.name] > 0)
Run Code Online (Sandbox Code Playgroud)
这将返回一个布尔数组:
A B
0 False True
1 True True
2 True True
3 True False
Run Code Online (Sandbox Code Playgroud)
我想使用此数组在单个列中选择条件为true的数据帧中的行,例如A- >第1-3行,还查找所有输入列的条件为true的行,例如第1行和2。有没有一种有效的方法可以对付熊猫?
您可以使用 apply 语句的结果来从原始数据帧中选择布尔索引:
results = df[["A","B"]].apply(lambda x: x.abs()-5*df['d'+x.name] > 0)
Run Code Online (Sandbox Code Playgroud)
它返回上面的布尔数组:
A B
0 False True
1 True True
2 True True
3 True False
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用此数组从原始数据集中选择行,如下所示:
选择 A 为 True 的情况:
df[results.A]
A B dA dB
1 2 -4.0 0.263 0.357
2 5 5.0 0.382 0.397
3 -4 -0.5 0.330 0.115
Run Code Online (Sandbox Code Playgroud)
选择 A 或 B 为 true 的情况:
df[results.any(axis=1)]
A B dA dB
0 -1 3.0 0.310 0.080
1 2 -4.0 0.263 0.357
2 5 5.0 0.382 0.397
3 -4 -0.5 0.330 0.115
Run Code Online (Sandbox Code Playgroud)
选择所有列都为 true 的位置:
df[results.all(axis=1)]
A B dA dB
1 2 -4.0 0.263 0.357
2 5 5.0 0.382 0.397
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3121 次 |
| 最近记录: |