简体   繁体   English

根据条件组合 Dataframe 列中的行

[英]Combine rows in Dataframe column based on condition

I have the excerpt of the following df :我有以下df的摘录:

                     Causa de muerte   Sexo              Edad  Periodo   Total
39  001-102  I-XXII.Todas las causas  Total    Menos de 1 año     2018    1027
40  001-102  I-XXII.Todas las causas  Total    Menos de 1 año     2017    1092
41  001-102  I-XXII.Todas las causas  Total    Menos de 1 año     2016    1120
78  001-102  I-XXII.Todas las causas  Total     De 1 a 4 años     2018     240
79  001-102  I-XXII.Todas las causas  Total     De 1 a 4 años     2017     226
80  001-102  I-XXII.Todas las causas  Total     De 1 a 4 años     2016     248

Is there a way to combine/merge the rows where 'Edad' == 'Menos de 1 año' and 'Edad' == 'De 1 a 4 años' and rename the merged rows to 'De 0 a 4 años'.有没有办法组合/合并 'Edad' == 'Menos de 1 año' 和 'Edad' == 'De 1 a 4 años' 的行并将合并的行重命名为 'De 0 a 4 años'。 My goal is that the corresponding numbers in 'Total' add up:我的目标是“总计”中的相应数字加起来:

                     Causa de muerte   Sexo              Edad  Periodo   Total
39  001-102  I-XXII.Todas las causas  Total     De 0 a 4 años     2018    1267
40  001-102  I-XXII.Todas las causas  Total     De 0 a 4 años     2017    1318
41  001-102  I-XXII.Todas las causas  Total     De 0 a 4 años     2016    1368

I'm assuming you'll do it with groupby, but I haven't figured out how.我假设你会用 groupby 来做,但我还没弄清楚怎么做。

Use Series.replace with aggregate sum :使用Series.replacesum

df['Edad'] = df['Edad'].replace({'Menos de 1 año':'De 1 a 4 años'})

df = df.groupby(['Causa de muerte','Sexo','Edad','Periodo'], as_index=False)['Total'].sum()
print (df)
                    Causa de muerte   Sexo           Edad  Periodo  Total
0  001-102  I-XXII.Todas las causas  Total  De 1 a 4 años     2016   1368
1  001-102  I-XXII.Todas las causas  Total  De 1 a 4 años     2017   1318
2  001-102  I-XXII.Todas las causas  Total  De 1 a 4 años     2018   1267

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM