python - 过滤不在列表中的熊猫数据框列名
问题描述
我有以下数据框:
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()
任何建议都非常感谢!谢谢!
解决方案
您可以使用布尔索引:
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']
推荐阅读
- css - 使radial-gradient() 跨越两个元素
- javascript - Javascript - 获取字符串倒数第二次出现的索引?
- c# - 在 C# 中如何从凭据管理器获取 Windows 凭据
- python - 尝试保存动画会出错:OSError: Error save animation to file (cause: [Errno 22] Invalid argument)
- python - 无法按照我想要的方式使用 tkinter 设计 GUI
- c# - 如何在 C# 中创建应用程序之间的通信?
- java - The project uses Gradle 2.12 which is incompatible with IDEA running on Java 10 or newer
- html - 如何使用 html 在 iframe 内定位图像?
- terraform - Terraform 长期锁定
- php - 执行 SQL 查询时出错,如果单独执行,这些查询会起作用