熊猫列名称分为两个级别

时间:2020-08-16 17:35:32

标签: python pandas dataframe

我的初始数据框: initial DF

嗨,我正在做一次分配,在执行Dataframe融化操作,然后进行分组和计数之后,当我进行后面的操作时,我发现了一些有趣的事情:

melted_df = df.melt(id_vars= 'cardio',value_vars=['cholesterol'     ,'gluc' ,   'smoke' ,   'alco' ,    'active' ,  'overweight'])


melted_df = pd.DataFrame(melted_df.groupby(['cardio' ,  'variable' ,    'value'])['value'].count())

此操作后,列分为两个级别:

enter image description here

我只能重命名1级名称,而不能重命名较低的级别。

有人可以解释为什么有两个级别吗?

1 个答案:

答案 0 :(得分:1)

您需要设置as_index参数。

pd.DataFrame(melted_df.groupby(['cardio' ,  'variable' ,    'value'], as_index=False)['value'].count())

发生此问题是因为将现有数据框作为数据放入新数据框:

您是否有理由不这样做?

melted_df = melted_df.groupby(['cardio' ,  'variable' ,    'value'], as_index=False)['value'].count()

根据您的评论中的请求:

import pandas as pd
df = pd.read_csv(r"D:\test\medical_examination.csv")
df = df.melt(id_vars=['id', 'cardio'], value_vars=['cholesterol', 'gluc', 'smoke', 'alco', 'active'])
df = df.groupby(['cardio', 'variable', 'value'])['value'].agg(total=sum).reset_index()