python - 将列值拆分为一对一映射
问题描述
以下问题的扩展: Split (explode) pandas dataframe string entry to separate rows
东风:
STATE CITY ALT_NAMES
0 S1 C1 A1@A2
1 S2 C2 A3@A4@A5
我怎样才能达到以下结果:
out_df :
STATE CITY CITY_VAR
0 S1 C1 A1
1 S1 C1 A2
2 S2 C2 A3
3 S2 C2 A4
4 S2 C2 A5
样本数据 :
STATE CITY ALT_NAMES
FL FT. MYERS FORT MYERS@FT MYERS
FL NORTH FT MYERS N.FT.MYERS@N. FORT MYERS@NORTH FORT MYERS
解决方案
对我来说工作:
df = explode(df.assign(ALT_NAMES=df.ALT_NAMES.str.split('@')), 'ALT_NAMES')
print (df)
STATE CITY ALT_NAMES
0 S1 C1 A1
1 S1 C1 A2
2 S2 C2 A3
3 S2 C2 A4
4 S2 C2 A5
另一个纯熊猫解决方案:
df = (df.join(df.pop('ALT_NAMES')
.str.split('@', expand=True)
.stack()
.reset_index(level=1, drop=True)
.rename('ALT_NAMES'))
.reset_index(drop=True ))
print (df)
STATE CITY ALT_NAMES
0 FL FT. MYERS FORT MYERS
1 FL FT. MYERS FT MYERS
2 FL NORTH FT MYERS N.FT.MYERS
3 FL NORTH FT MYERS N. FORT MYERS
4 FL NORTH FT MYERS NORTH FORT MYERS
推荐阅读
- rabbitmq - Symfony 4 和队列
- ios - 从 Firebase 孩子那里获取数据
- javascript - JavaScript:有没有办法在没有换行符的情况下打印输出?
- swift - 预期的 ',' 在可选绑定中加入 Swift“Where case”中的多子句条件的一部分
- r - 在 R 中构建嵌套小标题的数据框?
- ios - 错误域=AVFoundationErrorDomain Code=-11800“操作无法完成”{错误域=NSOSStatusErrorDomain Code=-16976“(null)”}
- laravel - 使用 Laravel 将图像文件上传到谷歌云
- swift - UI 选择器视图错误我试图让它填充模型,
- java - 更快的活动转换
- .net-core - 如何拦截 dotnetcore 进程的标准输出以执行交互式 linux 命令