我有以下數據框: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
提交
取消