首页 > 解决方案 > python - 如何在Python中基于分隔符的熊猫数据框中的值从内部的值创建新行?

问题描述

我有如下数据框。我想将列 zip 中的值拆分为行值,如下所示。这些值可以_ ,.由这些分隔符分隔。这如何在 python 中完成。

输入

df.head(5)

    Date    Item_Code   Type    Zip
    1/1/2020    A   Long    07_08_09
    12/4/2020   B   Small   AB_CD_EF_GF
    13/4/2020   A   Long    08_14
    1/5/2020    A   Long    
    21/5/2020   B   Small   09,07,16
    22/5/2020   B   Small   AB,07

预期产出

Date    Item_Code   Type    Zip
1/1/2020    A      Long    07
1/1/2020    A      Long    08
1/1/2020    A      Long    09
12/4/2020   B      Small   AB
12/4/2020   B      Small   CD
12/4/2020   B      Small   EF
12/4/2020   B      Small   GF
13/4/2020   A      Long    08
13/4/2020   A      Long    14
1/5/2020    A      Long 
21/5/2020   B      Small   09
21/5/2020   B      Small   07
21/5/2020   B      Small   16
22/5/2020   B      Small   AB
22/5/2020   B      Small   07

标签: pythonregexpython-3.xpandasdataframe

解决方案


首先使用Series.str.splitwitg 正则表达式,然后分配回DataFrame.assign然后使用DataFrame.explode,我还在最后一步创建了默认的唯一索引:

df1 = (df.assign(Zip = df['Zip'].str.split('[_ ,\.]'))
         .explode('Zip')
         .reset_index(drop=True))
print (df1)
         Date Item_Code   Type  Zip
0    1/1/2020         A   Long   07
1    1/1/2020         A   Long   08
2    1/1/2020         A   Long   09
3   12/4/2020         B  Small   AB
4   12/4/2020         B  Small   CD
5   12/4/2020         B  Small   EF
6   12/4/2020         B  Small   GF
7   13/4/2020         A   Long   08
8   13/4/2020         A   Long   14
9    1/5/2020         A   Long  NaN
10  21/5/2020         B  Small   09
11  21/5/2020         B  Small   07
12  21/5/2020         B  Small   16
13  22/5/2020         B  Small   AB
14  22/5/2020         B  Small   07

推荐阅读