代码之家  ›  专栏  ›  技术社区  ›  Oblomov

基于选定列的透视熊猫数据帧

  •  0
  • Oblomov  · 技术社区  · 6 年前

    数据帧如何

    df = pd.DataFrame({'car':['BMW','BMW','VW','VW'],'color':['red','blue','red','blue'],'count':[1,2,4,8]})
    df
    
        car    color  count
    0   BMW     red     1
    1   BMW     blue    2
    2   VW      red     4
    3   VW      blue    8
    

    转变为

        car     red    blue
    0   BMW      1      2
    1   VW       4      8
    

    ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   unutbu    6 年前

    你可以用 df.pivot :

    In [9]: df.pivot(index='car', columns='color', values='count').reset_index()
    Out[9]: 
    color  car  blue  red
    0      BMW     2    1
    1       VW     8    4
    

    如果有多行具有相同的(汽车、颜色)组合,则使用 pivot_table 指定希望如何聚合 count S:

    In [7]: df.pivot_table(index='car', columns='color', values='count', aggfunc='sum').reset_index()
    Out[7]: 
    color  car  blue  red
    0      BMW     2    1
    1       VW     8    4