python - Pandas 数据框将长字符串列动态操作为 2 列
问题描述
我有数据框:
ID | 问候姓名 |
---|---|
1 | 你好+彼得|再见+约翰 |
2 | 嗨+厨师|gutentag+鲁道夫|下午好+亚历克斯 |
而且我要
ID | 问候 | 姓名 |
---|---|---|
1 | 你好 | 彼得 |
1 | 再见 | 约翰 |
2 | 你好 | 厨师长 |
2 | 古腾塔格 | 鲁道夫 |
2 | 下午好 | 亚历克斯 |
我不知道,如何动态拆分列问候语,以获得我想要的,因为列问候语具有不同的字符串长度。但边界分布保持不变greeting DELIMETER(+) name DELIMETER(|) greeting DELIMETER(+) name
从这个意义上说,它可以有不同的长度(几个名字和问候,在另一列中不同数量的名字和问候)
谢谢
解决方案
您可以为此使用爆炸:
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
推荐阅读
- performance - 如何通过浏览器扩展获取 Web 应用性能指标?
- oracle - Oracle Reports - 使用 dblink 为空的字符串字段
- makefile - Make:在 make 中使用静态模式规则
- javascript - PHP & AJAX - 不刷新以获取数据到另一个页面并使其成为模态
- typescript - 使用 ng-packagr 时 Angular 通用构建失败?
- java - 输入参数为 Map 类型的 Java Spark UDF
- heroku - 在 heroku 中部署时,prisma graphql 令牌无法验证
- hive - 如何通过配置单元在序列文件中写入自定义键值
- jquery - 查找重复的 div 内容并替换它
- python - 在MoviePy中使文本在宽度和高度之间自动调整为TextClip