Skip to main content
 首页 » 编程设计

Python pandas之DataFrame groupby 和重构

2025年05月04日22java哥

我对 pandas 中的 groupby() 有疑问

如果我有一个像"df"这样的DataFrame

    user  day  click 
0   U1    Mon  15 
1   U2    Mon  7  
2   U1    Wed  15  
3   U3    Tue  21 
4   U2    Tue  15 
5   U2    Tue  10 

当我使用 df.groupby(['user', 'day']).sum()
会是

            click   
user  day 
U1    Mon   15 
      Tue   NaN 
      Wed   15 
U2    Mon   7 
      Tue   25 
      Wed   NaN 
U3    Mon   NaN 
      Tue   21 
      Wed   NaN 

我怎样才能得到这样的DataFrame

day    Mon   Tue   Wed 
user 
U1     15    NaN   15 
U2     7     25    NaN 
U3     NaN   21    NaN 

表示将一列转换为DataFrame的列名。
有什么方法可以做到这一点?

请您参考如下方法:

使用以天为列的数据透视函数并填充点击次数。

df.groupby(['user', 'day']).sum().reset_index()\ 
  .pivot(index='user',columns='day',values='click') 
Out[388]:  
day    Mon   Tue   Wed 
user                   
U1    15.0   NaN  15.0 
U2     7.0  25.0   NaN 
U3     NaN  21.0   NaN 

或者你可以只重置二级索引,这样你就不需要在pivot函数中指定索引列。

df.groupby(['user', 'day']).sum().reset_index(level=1)\ 
.pivot(columns='day',values='click')