Skip to main content
 首页 » 编程设计

python之如何将连接的列名称拆分为单独的列

2025年05月04日14sky-heaven

为了进行分析,我获得了一个列名称,其中包含有关产品、市场和分销的具体信息。

数据集结构如下:

Date     Product1|CBA|MKD  Product1|CPA|MKD     Product1|CBA|IHR    Product2|CBA|IHR 
2018-11  12                 23                   0                   2 

有很多独特的列组合。我想做的是获得以下结构:

Date      Product    Partner   Market      Quantity 
2020-1    Product1   CBA       MKD         11 
2020-1    Product1   CPA       MKD         22 
2020-1    Product1   CBA       IHR         0 
2020-1    Product2   CBA       IHR         1 

所以,我想创建 3 个不同的列,并使用列名中的粘贴值填充它们。数量列显然包含旧连接列的值(我知道该怎么做),问题是获取前 3 列。

我曾尝试通过匹配字符串在 pandas 中做到这一点,但我真的被卡住了。非常感谢您的帮助,谢谢!

请您参考如下方法:

看起来你可以使用 pandas.melt

df_ = df.melt(id_vars = 'Date', value_name = 'Quantity') 
df_[['Product', 'Partner','Market']] = df_.variable.str.split('|',  
                                                             expand = True)\ 
                                                        .dropna(axis = 1)  
df_.pop('variable') 
df_ 
Out[67]:  
      Date  Quantity   Product Partner Market 
0  2018-11        12  Product1     CBA    MKD 
1  2018-11        23  Product1     CPA    MKD 
2  2018-11         0  Product1     CBA    IHR 
3  2018-11         2  Product2     CBA    IHR