如何计算具有不同类别的多个列的值

时间:2019-07-10 12:10:23

标签: python pandas dataframe

我需要在一个新的类别中计算具有不同类别的多个列的值。我有16个类别,但并非所有类别都在我需要计数的列中。 我有这个df:

Tipo_Diagnosticos_Secundarios_2  ...   Tipo_Diagnosticos_Secundarios_3             
0 Enfermedades del sistema circulatorio... Clasificación suplementaria
1 Lesiones y envenenamientos  ...  Trastornos mentales
2 Neoplasias    ...                  Síntomas, signos y estados mal definidos
3 Neoplasias  ...                   Enfermedades del sistema circulatorio
4 Neoplasias  ...                   Enfermedades de la sangre
5 Neoplasias  ...                   Enfermedades del sistema circulatorio

我尝试过:

df['Freq_Tipos_Diag_Sec_2']=(df.groupby('Tipo_Diagnosticos_Secundarios_2').ngroup())
df['Freq_Tipos_Diag_Sec_3']=(df.groupby('Tipo_Diagnosticos_Secundarios_3').ngroup())




df['total_Tipos_Diag_Sec'] = df['Freq_Tipos_Diag_Sec_2'] + df['Freq_Tipos_Diag_Sec_3'] 


df['total_Tipos_Diag_Sec'] = df['Freq_Tipos_Diag_Sec_2'] + df['Freq_Tipos_Diag_Sec_3']

1 个答案:

答案 0 :(得分:0)

如果需要整数形式的唯一类别,请使用DataFrame.stackSeries.value_counts与字符串结合使用:

df2 = (df.filter(like='Tipo_Diagnosticos_Secundarios')
         .stack()
         .value_counts()
         .rename_axis('vals')
         .reset_index(name='counts'))

print (df2)
                                       vals  counts
0                                Neoplasias       4
1     Enfermedades del sistema circulatorio       3
2                 Enfermedades de la sangre       1
3               Clasificacion suplementaria       1
4                Lesiones y envenenamientos       1
5                       Trastornos mentales       1
6  Sintomas, signos y estados mal definidos       1