【问题标题】:Merge columns with more than one value in pandas dataframe合并熊猫数据框中具有多个值的列
【发布时间】:2022-11-17 19:14:11
【问题描述】:

我在 Python 中使用 pandas 得到了这个 DataFrame:

Column 1 Column 2 Column 3
hello a,b,c 1,2,3
hi a,b,c 4,5,6

第 3 列中的值属于第 2 列中的类别。 有没有办法合并我得到此输出的第 2 列和第 3 列?

Column 1 a b c
hello 1 2 3
hi 4 5 6

任何建议都会非常有帮助!谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以在exploding 逗号之后使用pd.crosstab

    new_df = ( df.assign(t=df['Column 2'].str.split(','), a=df['Column 3'].str.split(',')).
                          explode(['t', 'a']) )
    
    output = ( pd.crosstab(index=new_df['Column 1'], columns=new_df['t'], 
                         values=new_df['a'], aggfunc='sum').reset_index() ) 
    

    输出:

    t   Column 1    a   b   c
    0   hello       1   2   3
    1   hi          4   5   6
    

    【讨论】:

      【解决方案2】:
      df.apply(lambda x: pd.Series(x['Column 3'].split(','), index=x['Column2'].split(',')), axis=1)    
      

      输出:

          a   b   c
      0   1   2   3
      1   4   5   6
      

      结果为df1concat

      df1 = df.apply(lambda x: pd.Series(x['Column 3'].split(','), index=x['Column2'].split(',')), axis=1)
      
      pd.concat([df['Column 1'], df1], axis=1)
      

      输出:

          col1    a   b   c
      0   hello   1   2   3
      1   hi      4   5   6
      

      【讨论】:

        猜你喜欢
        • 2021-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        相关资源
        最近更新 更多