Python pandas DataFrame groupby 和 re-constru

2024-04-25 05:50:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于熊猫群比()的问题

如果我有一个数据帧

    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

当我使用数据框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

我怎样才能得到这样的数据帧

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

这意味着将一列转换为数据帧的列名。
有什么方法可以做到这一点吗?你知道吗


Tags: 数据方法nanclicksumgroupbydaymon
2条回答

只是使用unstack()的另一种方法:

df=df.groupby(['user', 'day']).sum().unstack('day') #unstack
df.columns = df.columns.droplevel() # drop first level column name
df

输出:

day  Mon  Tue  Wed
user            
U1   15.0 NaN  15.0
U2   7.0  25.0 NaN
U3   NaN  21.0 NaN

使用pivot函数,将day作为列并用单击填充。你知道吗

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函数中指定index列。你知道吗

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

相关问题 更多 >