我有以下數(shù)據(jù)框: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記錄數(shù)。答案是這樣的:status file_name countfinal my_movie.mov 1source his_movie.mov 2在 SQL(使用 mysql 方言)中我會(huì)這樣做:SELECT status, file_name, COUNT(*) FROM df GROUP BY status我將如何在熊貓中做到這一點(diǎn)?我得到的最接近的是這個(gè),但這沒有添加到我想要的 file_name 中:>>> df[['new__status', 'file_name']].groupby('new__status').count().sort_values('file_name', ascending=False)
2 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試這個(gè)
df.groupby('status').agg({'file_name': 'first', 'status': 'size'}).rename(columns={'status': 'count'}).reset_index()

莫回?zé)o
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用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
添加回答
舉報(bào)
0/150
提交
取消