Python 根据条件合并Dataframe列中的行

Python 根据条件合并Dataframe列中的行,python,pandas,merge,Python,Pandas,Merge,我有以下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

我有以下
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
是否有方法合并/合并“Edad”==“Menos de 1 año”和“Edad”==“de 1 a 4 años”的行,并将合并行重命名为“de 0 a 4 años”。 我的目标是“总计”中相应的数字相加:

                     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
我假设你会使用groupby,但我还没有弄清楚如何使用。

使用聚合
sum

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
与聚合
总和一起使用

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

同样的想法,比我快:)刚试过,但似乎不起作用。“Total”中的数字似乎没有加起来,而“Edad”中的数字仍然是“de1a4años”,而应该是“de0a4años”。它基本上应该将两个年龄组的“Menos de 1 año”(不到一年)和“de 1 a 4 años”(从1岁到4岁)的“总数”相加,并称之为“de 0 a 4 años”(从0岁到4岁)@LeLuc-那么替换不起作用了吗?可能有一些空白吗?不,不幸的是没有。我还尝试了
df_m['Edad']=df_m['Edad'].替换({'Menos de 1 año':'de 0 a 4 años')
,但这只是保留了两个组,并没有将它们合并。@LeLuc-在我的解决方案之前什么是
打印(df['Edad'].unique())
?同样的想法,比我快:)刚刚尝试过,但似乎不起作用。“Total”中的数字似乎没有加起来,而“Edad”中的数字仍然是“de1a4años”,而应该是“de0a4años”。它基本上应该将两个年龄组的“Menos de 1 año”(不到一年)和“de 1 a 4 años”(从1岁到4岁)的“总数”相加,并称之为“de 0 a 4 años”(从0岁到4岁)@LeLuc-那么替换不起作用了吗?可能有一些空白吗?不,不幸的是没有。我还尝试了
df_m['Edad']=df_m['Edad'].替换({'Menos de 1 año':'de 0 a 4 años'})
,但这只是保留了两个组,并没有合并它们。@LeLuc-在我的解决方案之前,
打印(df['Edad'].unique())
是什么?