python - 如何将列值解析为数据框中的多行?
问题描述
我有多个数据框,格式是这样的:
a|b|c label 1003252452 20210929
df 中可能有一列由竖线 | 分隔。我想将此行拆分为 3 行,所有其他列保持不变:
id tag uid date
a label 1003252452 20210929
b label 1003252452 20210929
c label 1003252452 20210929
同样在拆分后,由于拆分可能存在重复行,应删除重复行。有没有好的方法来做到这一点?我正在考虑以这种方式接近:
for df in all_dfs:
dict_rows = []
for index, row in df.iterrows():
new_rows = []
if 'id' in row:
row_dict = dict(row)
tags = row_dict['id'].split('|')
for tag in tags:
new_row = {'id': tag}
del row_dict['id']
...
这可能是可能的,但非常复杂。有一个更好的方法吗?
解决方案
使用str.split
+ explode
+ drop_duplicates
:
df.assign(id = df.id.str.split('|')).explode('id').drop_duplicates().reset_index(drop=True)
id tag uid date
0 a label 1003252452 20210929
1 b label 1003252452 20210929
2 c label 1003252452 20210929
推荐阅读
- r - R中的循环:使用索引括号子集
- python-3.x - 将列表绘制为颜色条以有效地可视化异常值
- python - 具有多个条件的 SQLAlchemy CheckConstraint 引发警告
- javascript - 让文本掩码库与 Vue 一起使用 - 错误:不提供名为“默认”的导出
- assembly - 我如何从汇编代码中判断微处理器的架构是什么?
- sql - SQL:如果存在另一列,如何计算一列的总数?
- python - 如何测试列表中的 if 语句
- node.js - Nodemon -L 无法在 Docker 上使用 package.json 中的 npm 脚本
- python - 删除所有出现的两个字符之间的字符串
- python - 属性错误:“spacy.tokens.doc.Doc”对象没有属性“已发送”