首页 > 解决方案 > 在 Pandas 中按条件返回常用列

问题描述

我目前有两行如下所示的数据框:

user_id    movieA    movieB    movieC    movieD
512A        0.0       1.0       2.0        1.0
AB72        1.0       2.0       0.0        3.0

我想返回一个列表,该列表代表两个用户都对上面的电影评分的列0.0。即对于上面的示例,我理想情况下会得到一个看起来像[movieB, movieD].

这甚至可能吗?我查看了此处可用的功能,但我不确定如何将它们组合起来以获得此结果。

标签: pythonpandas

解决方案


df = df.set_index("user_id")
df.columns[df.gt(0).all(axis=0)].tolist()

我们首先将user_id索引设置为具有清晰的符号,即不必键入df.iloc[:, 1:]而不是df在另一行上。然后我们检查数据框的值在哪里大于 0 ( gt(0)),然后检查哪些列的条目都大于 0 ( all(axis=0))。然后我们使用它作为 df 列的掩码,最后转换它tolist


推荐阅读