python - 通过与列表比较过滤掉 panda-df 的行
问题描述
经常出现以下问题。假设我有一个数据框,其中一列可以采用离散值:
df = pd.DataFrame({'col1': [1, 2,3,4,5,6,7], 'col2': ["A", "B", "A", "C", "B", "A", "D"]})
在这种情况下col2
可以取值 A、B 或 C。我只想要不等于 A 或 B 的行col2
。我认为以下语法会起作用,
df["col2"] not in ["A", "B"]
但是,这给了我错误ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有没有一种巧妙的方法可以过滤掉这些行?
解决方案
你可以使用isin
方法。
df = df[~df.col2.isin(['A', 'B'])]
输出
col1 col2
3 4 C
6 7 D
推荐阅读
- python - 在 Pandas 中使用多个间隔选择行(pd.Interval 范围对象)
- python - python3 -m pip install VS pip3 install
- laravel-5 - Auth::guard('admin')->user() 在 laravel 5.8 中为 NULL
- c - Vulkan vkCreateInstance - 访问冲突写入位置 0x0000000000000000
- python - 使用 venv 和 python 2.x 创建环境
- git - Git:安全回滚到以前的主人
- bash - 在 bash 中,如何将无限输出流重定向到处理的文件?
- intellij-idea - Intellij 为不应输出任何内容的键输出奇怪的字符
- lua - 考虑到 roblox studio 中的碰撞时如何移动对象
- ios - UIView 和 UICollection 的动态约束