【问题标题】:unable to split column in pandas dataframe无法拆分熊猫数据框中的列
【发布时间】:2022-07-20 20:15:51
【问题描述】:

我有一个数据框,其中一列有多个值,请参阅下面的虚拟数据集

import pandas as pd
data = pd.DataFrame({"A" : ["EmpA","EmpB","EmpC","EmpD","EmpI"], 
                      "Summary" :["XX1","XX2","XX3","XX4","XX5"],
                      "DummyCol" :["TextAAAA","TextAAAA","TextAAAA","TextAAAA","TextAAAA"],
                     "MonthSales" : ['25:50:30','30:40','35:43:45:46:100','40:3','45:32:1:23:90']})

我应用了 split 函数,但是结果它只返回单个列,除了获取结果和使用连接来组合输出之外,还有其他有效的方法吗..

data['MonthSales'].str.split(":",expand=True)

所需的数据结构

【问题讨论】:

    标签: python python-3.x pandas


    【解决方案1】:
    data['MonthSales'].str.strip().str.split(":",expand=True)
    

    【讨论】:

      【解决方案2】:

      您只需将类型转换为结果数据帧以浮动,然后将其连接回原始数据帧。

      data.join(data.pop('MonthSales').str.split(":",expand=True).astype(float))
      
            A Summary  DummyCol     0     1     2     3      4
      0  EmpA     XX1  TextAAAA  25.0  50.0  30.0   NaN    NaN
      1  EmpB     XX2  TextAAAA  30.0  40.0   NaN   NaN    NaN
      2  EmpC     XX3  TextAAAA  35.0  43.0  45.0  46.0  100.0
      3  EmpD     XX4  TextAAAA  40.0   3.0   NaN   NaN    NaN
      4  EmpI     XX5  TextAAAA  45.0  32.0   1.0  23.0   90.0
      

      请注意,我使用的是DataFrame.pop,因此它不会出现在最终结果中。

      【讨论】:

        【解决方案3】:

        您可以使用pands.join

        >>> data.join(pd.DataFrame(data['MonthSales'].str.split(':', expand=True)).add_prefix('MonthSales')).drop(['MonthSales'],1)
        
              A Summary  DummyCol MonthSales0 MonthSales1 MonthSales2 MonthSales3  \
        0  EmpA     XX1  TextAAAA          25          50          30        None   
        1  EmpB     XX2  TextAAAA          30          40        None        None   
        2  EmpC     XX3  TextAAAA          35          43          45          46   
        3  EmpD     XX4  TextAAAA          40           3        None        None   
        4  EmpI     XX5  TextAAAA          45          32           1          23   
        
          MonthSales4  
        0        None  
        1        None  
        2         100  
        3        None  
        4          90  
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-16
          • 2013-06-23
          • 2019-10-26
          • 2018-12-04
          • 1970-01-01
          • 2021-02-26
          • 1970-01-01
          相关资源
          最近更新 更多