为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫将列中的字符串拆分为多条记录

熊猫将列中的字符串拆分为多条记录

ibeautiful 2022-01-11 20:20:35
我有一个数据框 dfcol1   col2  col3a;b;c  w;x     1d;e;f  x;y     2g;h;i  z;u;v   3我想每一个字符串分割列col1,并col2为单独的记录,使数据帧看起来是这样的col1    col2    col3a       w       1b       x       1c       NaN     1d       x       2e       y       2f       NaN     2g       z       3h       u       3i       v       3
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

尝试组合Series.str.split, Series.stack, Series.rename, pandas.concat,DataFrame.assign和DataFrame.reset_index这样的:


例子

df = pd.DataFrame([{'col1': 'a;b;c', 'col2': 'w;x', 'col3': 1}, {'col1': 'd;e;f', 'col2': 'x;y', 'col3': 2}, {'col1': 'g;h;i', 'col2': 'z;u;v', 'col3': 3}, {'col1': '1,2,3', 'col2': '2', 'col3': 4}])


print(df)


#     col1   col2  col3

# 0  a;b;c    w;x     1

# 1  d;e;f    x;y     2

# 2  g;h;i  z;u;v     3

# 3  1,2,3      2     4


df_new = (pd.concat([df[x].str.split('[;,]', expand=True).stack().rename(x)

                     for x in df[['col1', 'col2']]], axis=1)

          .reset_index(level=1, drop=True)

          .assign(col3=df.col3))


print(df_new)


  col1 col2  col3

0    a    w     1

0    b    x     1

0    c  NaN     1

1    d    x     2

1    e    y     2

1    f  NaN     2

2    g    z     3

2    h    u     3

2    i    v     3

3    1    2     4

3    2  NaN     4

3    3  NaN     4


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信