Python Pandas groupby多列
发布时间:2020-12-20 11:58:19 所属栏目:Python 来源:网络整理
导读:谢谢您的帮助. 我的数据看起来像这样: city,room_typeA,XA,YA,ZB,XB,YB,Y 我希望我的最终结果看起来像这样: city,count(X),count(Y),count(z) A,1,1B,2,0 我按城市分组,我想显示每个城市中每个room_type的数量. 用python pandas做任何方法吗?谢谢. 我在几
谢谢您的帮助.
我的数据看起来像这样: city,room_type A,X A,Y A,Z B,X B,Y B,Y 我希望我的最终结果看起来像这样: city,count(X),count(Y),count(z) A,1,1 B,2,0 我按城市分组,我想显示每个城市中每个room_type的数量. 用python pandas做任何方法吗?谢谢. 我在几年前学过SQL,并认为它可能是可能的.我相信python可以做同样的事情.谢谢! 解决方法
您可以将
crosstab 与重命名列一起使用:
df = pd.crosstab(df.city,df.room_type).rename(columns=lambda x: 'count({})'.format(x)) print (df) room_type count(X) count(Y) count(Z) city A 1 1 1 B 1 2 0 使用groupby和 df = df.groupby(['city','room_type']).size().unstack(fill_value=0) .rename(columns=lambda x: 'count({})'.format(x)) print (df) room_type count(X) count(Y) count(Z) city A 1 1 1 B 1 2 0 df = df.groupby('city')['room_type'].value_counts().unstack(fill_value=0) .rename(columns=lambda x: 'count({})'.format(x)) print (df) room_type count(X) count(Y) count(Z) city A 1 1 1 B 1 2 0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |