首页 > 解决方案 > Pandas 数据框将长字符串列动态操作为 2 列

问题描述

我有数据框:

ID 问候姓名
1 你好+彼得|再见+约翰
2 嗨+厨师|gutentag+鲁道夫|下午好+亚历克斯

而且我要

ID 问候 姓名
1 你好 彼得
1 再见 约翰
2 你好 厨师长
2 古腾塔格 鲁道夫
2 下午好 亚历克斯

我不知道,如何动态拆分列问候语,以获得我想要的,因为列问候语具有不同的字符串长度。但边界分布保持不变greeting DELIMETER(+) name DELIMETER(|) greeting DELIMETER(+) name

从这个意义上说,它可以有不同的长度(几个名字和问候,在另一列中不同数量的名字和问候)

谢谢

标签: pythonpandasjupyter-notebookjupyter-lab

解决方案


您可以为此使用爆炸:

df['greetingsname']=df['greetingsname'].apply(lambda x: x.split('|'))

res=df.explode('greetingsname')

print(res)

   id       greetingsname
0   1         hello+peter
0   1        goodbye+john
1   2            hi+cheff
1   2     gutentag+rudolf
1   2  goodafternoon+Alex

res[['greeting', 'name']] = res['greetingsname'].str.split('+', expand=True)

del res['greetingsname']

res.reset_index(drop=True, inplace=True)

print(res)

   id       greeting    name
0   1          hello   peter
1   1        goodbye    john
2   2             hi   cheff
3   2       gutentag  rudolf
4   2  goodafternoon    Alex

推荐阅读