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())
是什么?