首页 > 解决方案 > 用分隔符重塑熊猫数据框列

问题描述

我有以下数据框(带有 2 列-str 的选项卡文件):

id1  id2

g1   ID:05434
g1   ID:05434
g1   NaN
g1   ID:05434|ID:38720|ID:33345

做完之后

df1 = df[df['id2'].notnull()]
df2 = df1.drop_duplicates(['id1','id2'])

我得到了df2,

id1  id2

g1   ID:05434
g1   ID:05434|ID:38720|ID:33345

我的目标是将其扩展为只有 2 列,例如

id1  id2

g1   ID:05434
g1   ID:05434
g1   ID:38720
g1   ID:33345

是否有任何扩展功能?

提前致谢。

标签: pythonpandas

解决方案


使用str.splitwith stack,也用于 remove NaNs DataFrame.dropna

编辑:通过 OP 评论被删除,最后重复排序值:

df2 = (df.dropna(subset=['id2'])
         .set_index('id1')['id2']
         .str.split('|', expand=True)
         .stack()
         .reset_index(level=1, drop=True)
         .reset_index(name='id2')
         .sort_values(by=['col1', 'col2'])
         .drop_duplicates(['col1','col2']))

print (df2)
  id1       id2
0  g1  ID:05434
2  g1  ID:38720
3  g1  ID:33345

推荐阅读