And*_*rew 4 python set dataframe pandas
我有一套
remove_set
Run Code Online (Sandbox Code Playgroud)
我想删除数据框中列值在该集合中的所有行.
df = df[df.column_in_set not in remove_set]
Run Code Online (Sandbox Code Playgroud)
这给了我错误:
'Series' objects are mutable, thus they cannot be hashed.
Run Code Online (Sandbox Code Playgroud)
什么是解决这个问题的最大熊猫/ pythonic方法?我可以遍历行并找出要排除的ilocs,但这看起来有点不雅.
一些样本输入和预期输出.
输入:
column_in_set value_2 value_3
1 'a' 3
2 'b' 4
3 'c' 5
4 'd' 6
remove = set([2,4])
Run Code Online (Sandbox Code Playgroud)
输出:
column_in_set value_2 value_3
1 'a' 3
3 'c' 5
Run Code Online (Sandbox Code Playgroud)
要进行选择,您可以写:
df[~df['column_in_set'].isin(remove)]
Run Code Online (Sandbox Code Playgroud)
isin() 只需检查列/ Series的每个值是否在一个集合(或列表或其他可迭代)中,返回一个布尔系列.
在这种情况下,我们希望只包含DataFrame中不存在的行,remove因此我们将布尔值反转,~然后使用它来索引DataFrame.
| 归档时间: |
|
| 查看次数: |
1935 次 |
| 最近记录: |