嗨,我正在做一次分配,在执行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())
此操作后,列分为两个级别:
我只能重命名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()