【问题标题】:Transform multiple rows into a single row using Pandas使用 Pandas 将多行转换为单行
【发布时间】:2018-10-09 19:34:01
【问题描述】:

我确信这很容易做到,但我想不通。 我正在用 python 编码并使用 pandas 处理数据帧。我的数据框如下所示:

a b  c
1 10 20
1 30 40
1 60 70
1 80 100
2 10 20
2 60 70
2 80 100

我想这样改造它:

a b1 c1 b2 c2 b3 c3 b4 c4
1 10 20 30 40 60 70 80 100
2 10 20 60 70 80 100 NA NA

基本上对于a 中的值相同的每一行,取bc 中的值并将它们转换为新列,这样我最终对于@987654326 中的每个值只有一行@。

我希望我足够清楚,如果不是,请毫不犹豫地告诉我。 提前感谢您提供的任何帮助!

弗洛里安。

【问题讨论】:

    标签: python pandas dataframe rows


    【解决方案1】:

    我们需要在这里创建一个帮助键,使用cumcount

    s=df.assign(key=df.groupby('a').cumcount()+1).set_index(['a','key']).stack().unstack([1,2])
    s.columns=s.columns.map('{0[1]}{0[0]}'.format)
    s
    Out[396]: 
         b1    c1    b2    c2    b3     c3    b4     c4
    a                                                  
    1  10.0  20.0  30.0  40.0  60.0   70.0  80.0  100.0
    2  10.0  20.0  60.0  70.0  80.0  100.0   NaN    NaN
    

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2016-10-17
      • 1970-01-01
      • 2020-10-09
      相关资源
      最近更新 更多