python - 根据另一个列表从熊猫数据框列中的列表中删除值
问题描述
我在包含列表的数据框中有一列。我希望能够根据我在另一个列表中的元素从这些列表中删除元素(如下所示)。
我尝试使用列表理解,但似乎没有结果。
import pandas as pd
sys_list = ['sys1', 'sys2', 'sys3']
df = pd.DataFrame({'A':[['sys1', 'sys2', 'user1'],
['user3', 'user6', 'user1'],
['sys1', 'sys2', 'sys3']]})
df['A'] = [item for item in df['A'] if item not in sys_list]
print(df)
A
0 [sys1, sys2, user1]
1 [user3, user6, user1]
2 [sys1, sys2, sys3]
我需要实现这一点:
A
0 [user1]
1 [user3, user6, user1]
2 []
有什么想法吗?
解决方案
使用Series.apply
:
df['B'] = df['A'].apply(lambda x: [item for item in x if item not in set(sys_list)])
print (df)
A B
0 [sys1, sys2, user1] [user1]
1 [user3, user6, user1] [user3, user6, user1]
2 [sys1, sys2, sys3] []
或类似的列表理解,如已删除的答案:
df['B'] = [[item for item in l if item not in set(sys_list)] for l in df['A']]
或使用set
s 的解决方案set.difference
:
df['B'] = df['A'].map(set(sys_list).difference).map(list)
推荐阅读
- c++ - 但我想添加一个不搜索扩展名为 .dll 的文件的代码 请给我代码
- javascript - 用 jQuery 解决这个 Nan 问题
- clang - 在 C++ 中编译虚拟继承类时,Clang 如何计算虚拟表中 GEP 指令的索引?
- python - 遍历字典列表并创建熊猫数据框
- python - Python中的XML解析:如何获取子节点关于扁平化字符串的字符串索引
- excel - 有没有办法用一个简单的函数来评估其他不同大小的表中的数组?
- html - 如何在没有空格的 css 中进行水平滚动:nowrap;
- javascript - Form.io 动态选择过滤如何传递两个参数
- java - 如何对预定义的数组进行平方并将其打印在 3 个整数空间中
- apache-kafka - 知识库 | 消费滞后 | 汇合云|