我有以下数据框:
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)
答案 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