我正在尝试转换一个 Dataframe ,其中每行是一个特定的事件,每列都有关于该事件的信息。我希望将其转换为数据,其中每行是一个国家和年份,并包含关于给定年份中事件的数量和特征的信息。在此数据集中,每个事件都是恐怖主义的发生,我希望对nkill、nmattake、和每年受伤。这个数据集有西非的16个国家,着眼于2000 - 2020年,总共记录了大约8000起事件。数据来自全球恐怖主义数据库,这是一个论文/独立研究项目(即不是分级课堂作业)。
现在我的数据看起来像这样(还有很多其他列,但它们对这个不重要):
| 事件ID|伊耶尔|国家_文本|恩基尔|恩温德|人质|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 10000102|二○ ○ ○年|尼日利亚|三个|十个|无|
| 10000103|二○ ○ ○年|马里|1个|三个|十五|
| 10000103|二○ ○ ○年|尼日利亚|十五|无|无|
| 10000103|二○ ○一年|贝宁|1个|无|无|
| 10000103|二○ ○一年|尼日利亚|1个|三个|十五|
我希望它看起来像这样:
| 国家_文本|伊耶尔|总杀伤力|总受伤人数|人质总数|
| - ------|- ------|- ------|- ------|- ------|
| 尼日利亚|二○ ○ ○年|二百|三百|三百|
| 尼日利亚|二○ ○一年|二百五十|四百五十|十五|
基本上,我想把每个国家-年份组的nkill、ninjury和nmackage的数量加起来,这样我就可以得到一个所有国家和年份的列表,其中包含关于每年死亡、受伤和被劫持人质的数量的信息,以 * total * 表示。如果用数字而不是country_txt编写代码更容易,那么这些国家也有一个关联的数字。有国家编号的列就是"国家"。
对于解决方案,我一直在寻找panda的"groupby"函数,但我对编码真的很陌生,所以我很难理解文档,而且似乎melt或pivot函数可能会有帮助。
1条答案
按热度按时间s8vozzvw1#
这个简化的示例说明了如何使用groupby -
该表按国家和年份列出了各类事件的总数