熊猫通过辅助信息来计数

时间:2020-09-01 22:17:39

标签: python pandas

我有以下数据框:

df = pd.DataFrame([{'file_name': 'my_movie.mov', 'status': 'final'}, {'file_name': 'his_movie.mov', 'status': 'source'}, {'file_name': 'her_movie.mov', 'status': 'source'}])

       file_name  status
0   my_movie.mov   final
1  his_movie.mov  source
2  her_movie.mov  source

我想做类似的事情:

df.groupby('status')[['status', 'file_name', 'count']]

file_name可以是任何file_name值,count可以是记录的count。答案可能是这样的:

status         file_name              count
final          my_movie.mov           1
source         his_movie.mov          2

在SQL中(使用mysql方言),我会这样做:

SELECT status, file_name, COUNT(*) FROM df GROUP BY status

我该如何在熊猫中做到这一点?


我得到的最接近的是这个,但这并没有添加我想要的文件名:

>>> df[['new__status', 'file_name']].groupby('new__status').count().sort_values('file_name', ascending=False)

2 个答案:

答案 0 :(得分:2)

尝试一下

df.groupby('status').agg({'file_name': 'first', 'status': 'size'}).rename(columns={'status': 'count'}).reset_index()

答案 1 :(得分:0)

使用series.groupby NamedAgg

df_agg = df.groupby('status').file_name.agg(file_name='first', count='count').reset_index()

Out[393]:
   status      file_name  count
0   final   my_movie.mov      1
1  source  his_movie.mov      2