python - 在 pandas 数据框中操作列表的有效方法
问题描述
我有一个如下开头的 DataFrame:
第 1 列 | 第 2 列 | |
---|---|---|
0 | Berlin |
['Hamburg', 'Munich', 'Berlin', 'Stuttgart'] |
1 | Tokyo |
['Tokyo', 'Osaka', 'Kyoto', 'Sapporo'] |
2 | Los Angeles |
['New York', 'Chicago', 'Boston', 'Los Angeles'] |
3 | London |
['Birmingham', 'London', 'Glasgow', 'Liverpool'] |
我想从 Column2 列表中删除 Column1 中存在的城市,这样 DataFrame 就会变成这样:
第 1 列 | 第 2 列 | |
---|---|---|
0 | Berlin |
['Hamburg', 'Munich', 'Stuttgart'] |
1 | Tokyo |
['Osaka', 'Kyoto', 'Sapporo'] |
2 | Los Angeles |
['New York', 'Chicago', 'Boston'] |
3 | London |
['Birmingham', 'Glasgow', 'Liverpool'] |
由于逐行循环违反数据帧逻辑,解决这个问题的最佳方法是什么?
解决方案
尝试explode
,query
并且gropuby
:
(df.explode('Column2')
.query('Column1 != Column2')
.groupby(level=0)
.agg({'Column1': 'first',
'Column2': list
})
)
或者直接apply
:
df['Column2'] = df.apply(lambda row: [x for x in row['Column2'] if x!=x['Column1']],
axis=1)
推荐阅读
- python - 抓取溢价雅虎财经数据
- kubernetes - 使用 Helm 部署创建 PreStop 容器生命周期挂钩
- powershell - 用于 Microsoft Graph API 的多因素身份验证的 Powershell 脚本
- r - 找到到一组的最小距离
- excel - 在一封电子邮件中发送所有到期日期,并复制到期日期行数据
- macos - 代码签名失败;请手动重试。Electron 框架:bundle 格式不明确(可能是应用程序或框架)
- javascript - 未捕获的类型错误:没有名为“获取值”的方法 - 使用语义 ui 获取值以进行多选
- android - Flutter 中的 svg 操作(与用户交互)
- gradle - Gradle 脚本语法
- php - 从 php url $url 中删除空格