python - 在 pandas 数据框列的一个列表中查找项目,但不在另一个列表中查找项目
问题描述
我一直在这里陷入死胡同,这让我很生气。
数据框:
accountid col2 col3
1 ['abc','def','xyz'] ['abc','mda','xyz','sdi']
2 ['abc','asd','xyz','dib] ['nio','ouy','abc']
3 ['abc','def','xyz'] ['abc','mda','xyz']
笔记
* col2 和 col3 中的每个字段都是列表
* col2 和 col3 中的字段在列表中的项目数可能不相等
结果应该看起来像 我正在尝试创建一个 col4 来显示 col3 中不在和 col2 中的项目:
accountid col2 col3 col4
1 ['abc','def','xyz'] ['abc','mda','xyz','sdi'] ['mda','sdi']
2 ['abc','asd','xyz','dib] ['nio','ouy','abc'] ['nio','ouy']
3 ['abc','def','xyz'] ['abc','mda','xyz'] ['mda']
让我知道这是否没有意义。我很感激这方面的任何帮助。
解决方案
让我们做
s=df.col3.apply(set)-df.col2.apply(set)
0 {sdi, mda}
1 {nio, ouy}
2 {mda}
dtype: object
df['New']=s.map(list)
检查结果
s.map(list)
0 [sdi, mda]
1 [nio, ouy]
2 [mda]
dtype: object
你的列表不是列表,它是字符串
import ast
df.iloc[:,1:]=df.iloc[:,1:].applymap(ast.literal_eval)
推荐阅读
- android - 未选择的选项卡底部栏未使用 Xamarin.Forms Shell 显示(仅限 Android)
- linux - jq 解析和 linux 格式化为所需的输出
- php - Laravel 验证:验证两个日期和时间并在逻辑上验证它们
- javascript - 如何从本地服务器读取 Openlayers“KML 中的地震”的 KML 文件?
- firebase - 添加第二个项目后,Firebase 部署失败
- nginx - 为什么 nginx 在没有 Lua 的情况下也能正常工作?
- android - 如何在 Kotlin 中处理 editText Send 事件?
- html - 这是在反应中更改组件值的好方法吗?
- python-3.x - 根据列对熊猫元素进行分组
- scikit-learn - 如何在二维数据中找到连续区域