如何在Pandas中合并数据集中的两行

2024-06-26 18:02:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我最初有另一个专栏,名为Minor Category,有更多关于犯罪类别的信息。然而,我需要更少的信息来实现我的可视化,所以我放弃了它。这就是为什么有多个具有相同值的主要类别行(Barking和Dagenham中有2起盗窃犯罪) 我试图将这些相似的行合并为一行。这样,numCrimes就可以得到每一个的总数,每个自治区就会有一种主要类别出现一次

你知道怎么做到吗

df.drop('Minor Category', axis='columns', inplace=True)
df
Output: 

        Borough             Major Category                  numCrimes
Year            
2008    Barking and Dagenham    Burglary                      82.0
2008    Barking and Dagenham    Burglary                      59.0
2008    Barking and Dagenham    Criminal Damage               79.0
2008    Barking and Dagenham    Criminal Damage               142.0
2008    Barking and Dagenham    Criminal Damage               20.0
... ... ... ...
2018    Westminster             Violence Against the Person   386.0
2018    Westminster             Violence Against the Person   0.0
2018    Westminster             Violence Against the Person   41.0
2018    Westminster             Violence Against the Person   38.0
2018    Westminster             Violence Against the Person   109.0



Tags: andthe信息类别personminorcategorydamage
3条回答

我认为您需要的是一个非常简单的groupby操作:

grouped = df.groupby(['Year','Borough','Major Category']).sum()

## if you need to get the columns back...
grouped.reset_index()

groupbyagg是这里使用的正确函数,但是我们应该小心不要丢失看起来像df中的索引的“Year”。所以

(df.reset_index()
   .groupby(['Year','Borough','Major Category'], as_index = False)
   .agg(sum)
)

我们应该这样做;对于您的示例数据,它生成


    Year    Borough                 Major Category              numCrimes
0   2008    Barking and Dagenham    Burglary                    141.0
1   2008    Barking and Dagenham    Criminal Damage             241.0
2   2018    Westminster             Violence Against the Person 574.0
df.groupby(["Year", "Borough", "Major Category"]).sum()

或其变体。很确定你在寻找groupby的用法

相关问题 更多 >