【问题标题】:Pandas Dataframe Transpose to varying number of columns熊猫数据框转置到不同数量的列
【发布时间】:2017-03-04 02:42:27
【问题描述】:

我希望转置如下内容:

    ID    name
1     1    name
2     1    name1
3     2    name2
4     2    name3
5     2    name4

变成这样的:

     ID    col1  col2  col3
1     1    name  name1 Null
2     2    name2 name3 name4

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    您可以尝试以下方法,先创建一个列变量,然后使用pivot

    df['col'] = 'col' + (df.groupby('ID').cumcount() + 1).astype(str)
    df.pivot('ID', 'col', 'name')
    
    #col    col1     col2    col3
    #ID         
    #1      name    name1    None
    #2     name2    name3   name4
    

    【讨论】:

      【解决方案2】:

      您可以使用数据透视表:

      import pandas as pd
      df = pd.DataFrame({'ID': [1,1,2,2,2], 'name': 'name','name1','name2','name3','name4']})
      df['No.'] = df.groupby('ID').cumcount()
      df.pivot(index='ID', columns='No.', values='name')
      

      返回:

      No. 0   1   2
      ID          
      1   name    name1   None
      2   name2   name3   name4
      

      .unstack()

      df.set_index(['ID','No.'])['name'].unstack('No.')
      

      返回:

      No. 0   1   2
      ID          
      1   name    name1   None
      2   name2   name3   name4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-16
        • 1970-01-01
        • 2020-06-03
        • 2020-03-07
        • 2017-03-28
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多