首页 > 解决方案 > 如何将列值解析为数据框中的多行?

问题描述

我有多个数据框,格式是这样的:

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']
                 
                        ...

这可能是可能的,但非常复杂。有一个更好的方法吗?

标签: pythonpandasdataframe

解决方案


使用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

推荐阅读