我正在研究 pandas 只是知道,我被困在这个问题上。
我有这个数据框:
apple orange banana
0 (2021-01-01 00:00:00, 2) (2021-01-02 00:00:00, 1) (2021-01-01 00:00:00, 4)
1 (2021-01-02 00:00:00, 5) (2021-01-04 00:00:00, 2) (2021-01-03 00:00:00, 6)
2 (2021-01-03 00:00:00, 8) (2021-01-06 00:00:00, 3) (2021-01-04 00:00:00, 7)
我如何根据值排除一列?
例如,我只想要那些数字 > 6 的水果。 预期结果
apple banana
0 (2021-01-01 00:00:00, 2) (2021-01-01 00:00:00, 4)
1 (2021-01-02 00:00:00, 5) (2021-01-03 00:00:00, 6)
2 (2021-01-03 00:00:00, 8) (2021-01-04 00:00:00, 7)
其他例子,>=2 和 <=3 的水果 预期结果
apple orange
0 (2021-01-01 00:00:00, 2) (2021-01-02 00:00:00, 1)
1 (2021-01-02 00:00:00, 5) (2021-01-04 00:00:00, 2)
2 (2021-01-03 00:00:00, 8) (2021-01-06 00:00:00, 3)
使用 pandas 可以实现这种用例吗?感谢您的帮助。
最佳答案
使用您显示的示例,请尝试使用 bool 掩码 + loc
函数 pf Pandas:
m = df.apply(lambda s:s.str[1]).gt(6).any()
df.loc[:,m]
说明: 使用 lambda 函数选择每列元组值的第二个元素,一旦选择,然后检查哪个元素具有超过 6 个值,然后传递它到 any
函数,如果在整列中找到任何大于 6 的元素,该函数将返回 True。
输出如下:
apple banana
0 (2021-01-01 00:00:00, 2) (2021-01-01 00:00:00, 4)
1 (2021-01-02 00:00:00, 5) (2021-01-03 00:00:00, 6)
2 (2021-01-03 00:00:00, 8) (2021-01-04 00:00:00, 7)
关于python - 根据列值仅从 DataFrame 中获取列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67636083/