Pandas列名分为两个级别

2024-06-17 10:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的初始数据帧: initial DF

嗨,我在做一个作业,在数据帧融化操作之后,接着是分组和计数,我在做后面的操作时发现了一些有趣的事情:

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

I am only able to rename the 1st level names, not the lower levels.

Can someone explain why there are two levels ?


Tags: the数据iddfvalue作业vars事情
1条回答
网友
1楼 · 发布于 2024-06-17 10:24:43

您需要设置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()

相关问题 更多 >