用定界符重塑熊猫数据框列

时间:2018-07-25 13:56:08

标签: python pandas

我有以下数据框(带有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

对此有扩展功能吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

str.splitstack一起使用,DataFrame.dropna也用于删除NaN

编辑:通过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