繁体   English   中英

过滤不在列表中的 pandas dataframe 列名

[英]Filtering pandas dataframe column names that are not in a list

我有以下 dataframe:

df = pd.DataFrame(
{'a': [-0.558, -0.5584, -0.5583, -0.5583, -0.5581], 
 'b': [0.5324, 0.5324, 0.5324, 0.5324, 0.5323], 
 'c': [-0.2803, -0.2803, 0.2803, -0.2803, -0.2851],
 'd': [0.2359, 0.6532, 0.1254, 0.1231, 0.1785]})

    a        b       c      d
0   -0.5580 0.5324  -0.2803 0.2359
1   -0.5584 0.5324  -0.2803 0.6532
2   -0.5583 0.5324  -0.2803 0.1254
3   -0.5583 0.5324  -0.2803 0.1231
4   -0.5581 0.5323  -0.2851 0.1785

我想创建两个具有列名的列表,其中一个列表包含具有负值的列名,另一个包含具有正值的列名。

negative = df.columns[(df < 0).any()]

我正在努力获得类似的东西:

positive = df.columns NOT IN NEGATIVE

此代码返回错误:

list(df[[column for column in df.columns if column != negative]])

>>> ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

任何建议都非常感谢! 谢谢!

您可以使用 boolean 索引:

mask = (df < 0).all()

negative = df.columns[mask].tolist()
not_in_negative = df.columns[~mask].tolist()

print(negative)
print(not_in_negative)

印刷:

['a', 'c']
['b', 'd']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM