python - 根据列值仅从 DataFrame 中获取列

标签 python pandas

我正在研究 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/

相关文章:

python - 将 PyInstaller 用于 Matplotlib 脚本后出错

python - 将数据帧字符串列分为两列 : one with multiple text words, 和一个数字量

python - ValueError:未知标签类型: 'continuous'

python - Pandas 多索引切片 "Level type mismatch"

python - pandas reshape 日期序列

python - Pandas :每月日期范围与天数

python - 如何使用 2 列值更新第三列中的值?

python - 如何将实时数据从我的生产 App Engine 应用程序获取到我的本地开发应用程序?

python - 在类方法上使用 property()

python - Django View 安全性和最佳实践