[英]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.