首页 > 解决方案 > 如何使用标签上索引的特定列中的值拆分字符串?

问题描述

我有以下数据

Index   Data
0       100CO
1       50CO-50PET
2       98CV-2EL
3       50CV-50CO
.       .
.       .
.       .

我必须创建将数据格式拆分为不同的列,每个列都有自己的标题和值,结果应如下所示:

Index   Data          CO        PET      CV    EL
0       100CO         100       0        0     0
1       50CO-50PET    50        50       0     0
2       98CV-2EL      0         0        98    2
3       50CV-50CO     50        0        50    0
.       .
.       .
.       .

数据不限于 CO/PET/CV/EL,将需要尽可能多的列,每个列显示其对应的值。

.str.split('-', expand=True)函数只会分隔数据并将所有第一个值保留在同一列中,并且不会重命名每一列。

有没有办法在python中实现这个?

标签: python-3.xpandasdataframesplit

解决方案


你可以这样做:

df.Data.str.split('-').explode().str.split(r'(?<=\d)(?=\D)',expand = True). \
   reset_index().pivot('index',1,0).fillna(0).reset_index()

1  Index   CO  CV EL PET
0      0  100   0  0   0
1      1   50   0  0  50
2      2    0  98  2   0
3      3   50  50  0   0

推荐阅读