为每个类别聚合数据帧和计数

2024-09-28 01:29:32 发布

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

我有以下数据帧:

time             city             
2018-05-8        sydney        
2018-05-8        sydney
2018-05-8        melbourne
2018-05-9        sydney
2018-05-9        melbourne 

我试图得到以下信息:

time             syndey_count  melbourne_count 
2018-05-8        2             1
2018-05-9        1             1

到目前为止,我设法按时间分组,然后按城市汇总:

df.groupby('time').agg({'city': 'count'})

但这给了我:

time             city  
2018-05-8        3             
2018-05-9        2             

Tags: 数据信息citydftimecount时间agg
3条回答

另一个解决方案

df.groupby(['time', 'city']).size().unstack().add_suffix('_count')

您可以使用:

In [53]: df.groupby('time').city.value_counts().unstack(level=1).add_suffix('_count')
    ...: 
Out[53]: 
city       melbourne_count  sydney_count
time                                    
2018-05-8                1             2
2018-05-9                1             1

只是crosstab

pd.crosstab(df.time,df.city)
Out[77]: 
city       melbourne  sydney
time                        
2018-05-8          1       2
2018-05-9          1       1

相关问题 更多 >

    热门问题