我有以下数据框: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 status0 my_movie.mov final1 his_movie.mov source2 her_movie.mov source我想做这样的事情:df.groupby('status')[['status', 'file_name', 'count']]file_name可以是任何 file_name 值,count 是count记录数。答案是这样的:status file_name countfinal my_movie.mov 1source his_movie.mov 2在 SQL(使用 mysql 方言)中我会这样做:SELECT status, file_name, COUNT(*) FROM df GROUP BY status我将如何在熊猫中做到这一点?我得到的最接近的是这个,但这没有添加到我想要的 file_name 中:>>> df[['new__status', 'file_name']].groupby('new__status').count().sort_values('file_name', ascending=False)
2 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
尝试这个
df.groupby('status').agg({'file_name': 'first', 'status': 'size'}).rename(columns={'status': 'count'}).reset_index()
莫回无
TA贡献1865条经验 获得超7个赞
使用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
添加回答
举报
0/150
提交
取消