我有一个关于根据其他列的总和创建pandas数据帧的问题。
例如,我有这个数据框
Country | Accident
England Car
England Car
England Car
USA Car
USA Bike
USA Plane
Germany Car
Thailand Plane
我想根据国家/地区的所有事故的总和值制作另一个数据框。我们将忽略事故的类型,同时根据国家总结事故。
我的愿望数据框看起来像这样
Country | Sum of Accidents
England 3
USA 3
Germany 1
Thailand 1
答案 0 :(得分:6)
选项1
使用value_counts
df.Country.value_counts().reset_index(name='Sum of Accidents')
选项2
使用groupby
然后size
df.groupby('Country').size().sort_values(ascending=False) \
.reset_index(name='Sum of Accidents')
答案 1 :(得分:4)
您可以使用groupby
方法。
示例 -
In [36]: df.groupby(["country"]).count().sort_values(["accident"], ascending=False).rename(columns={"accident" : "Sum of accidents"}).reset_index()
Out[36]:
country Sum of accidents
0 England 3
1 USA 3
2 Germany 1
3 Thailand 1
说明 -
df.groupby(["country"]). # Group by country
count(). # Aggregation function which counts the number of occurences of country
sort_values( # Sorting it
["accident"],
ascending=False).
rename(columns={"accident" : "Sum of accidents"}). # Renaming the columns
reset_index() # Resetting the index, it takes the country as the index if you don't do this.