gpt4 book ai didi

Python Pandas 按多列分组

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:31 25 4
gpt4 key购买 nike

谢谢你的帮助。

我有这样的数据:

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, 1
B, 1, 2, 0

我按城市分组,我想显示每个城市中每个房间类型的数量。

有什么方法可以用 python pandas 做到这一点?谢谢。

我几年前学习了 SQL,并认为它可能是可能的。我相信 python 可以做同样的事情。谢谢!

最佳答案

您可以使用 crosstab使用 rename 列:

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

使用 groupbysize 的另一种解决方案或 value_counts ,用于 reshape unstack :

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

关于Python Pandas 按多列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42642001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com