如何在熊猫中使用groupby将行转换为列?

时间:2020-08-02 12:59:58

标签: python pandas pandas-groupby

我有一个看起来像这样的数据框

   SHIP_ID        LON            LAT        LABEL_ETA     VESSEL_TYPE       TIMESTAMP_UTC_MONTH
0   23445      233.226313      0.363567      21858.0     CONTAINER SHIP            APR
1   32323      100.200100     -0.457523      21857.0     CONTAINER SHIP            JAN
2   55421      191.223145     -0.398676      21855.0     CONTAINER SHIP            FEB
3   45672      112.234589      0.438764      21852.0     CONTAINER SHIP            DEC

但是,我想通过这种方式实现

   SHIP_ID       VESSEL_TYPE        JAN       FEB      MAR     APR .....    DEC
0   23445      CONTAINER SHIP      102.22    102.22    ...        
1   32323      CONTAINER SHIP      102.22    102.22    ...  
2   55421      CONTAINER SHIP      102.22    ..        ...
3   45672      CONTAINER SHIP      102.22    ..        ...

我希望将TIMESTAMP_UTC_MONTH的数据作为月份的列,其中包含每个月的LABEL_ETA的平均值。

LON和LAT也应排除在外。我已经尝试过诸如pivot_table()之类的方法,并且有效!但是要求说我只能使用groupby()方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

df.groupby(['SHIP_ID', 'VESEEL_TYPE', 'TIMESTAMP_UTC_MONTH']).LABEL_ETA.mean().unstack().reset_index()

了解有关在pandas' userguide中分组的更多信息

答案 1 :(得分:0)

如果只想获取“每个月的LABEL_ETA的平均值”,则可以简单地使用:

df.groupby('TIMESTAMP_UTC_MONTH').LABEL_ETA.mean()