我有一张桌子,如下所示:
ID MONTH_ID CATEGORY Disease_COUNT
551 2021-11 NON_MET 1
580 2022-03 MET 1
580 2022-01 MET 1我在上面的表上创建了一个枢轴,以便类别列中的唯一值成为新列,并按下表中给出的每个disease_count获取计数:
ID MONTH_ID COUNT_MET COUNT_NON_MET
551 2021-11 null 1
580 2022-03 1 null
580 2022-01 1 null我使用了下面给定的代码来创建上面的支点:
df2 = pd.pivot_table(df1,index=['ID','MONTH_ID'],
columns=['CATEGORY'],
values=["Disease_COUNT"]
).reset_index()
cols= ['BH_ID', 'MONTH_ID']
cols.extend([x for x in df2.columns.get_level_values(1) if x != ''])
df2.columns = colsdf1是上面给出的第一个数据框架,我需要修改上面给定的代码,这样我就可以得到ID、MONTH_ID、Disease_COUNT_MET和Disease_COUNT_NON_MET等列。也就是说,我需要Disease_COUNT_MET而不是COUNT_MET和Disease_COUNT_MET,而不是COUNT_NON_MET。
我需要动态地修改代码,我不能使用重命名函数。
下面是我需要的最后输出。
ID MONTH_ID Disease_COUNT_MET Disease_COUNT_NON_MET
551 2021-11 null 1
580 2022-03 1 null
580 2022-01 1 null请帮帮忙
发布于 2022-09-07 12:11:19
您可以扁平化MultiIndex:
df2 = (df1.pivot_table(index=['ID','MONTH_ID'],
columns=['CATEGORY'],
values=["Disease_COUNT"])
.pipe(lambda d: d.set_axis(d.columns.map('_'.join), axis=1))
.reset_index()
)
df2产出:
ID MONTH_ID Disease_COUNT_MET Disease_COUNT_NON_MET
0 551 2021-11 NaN 1.0
1 580 2022-01 1.0 NaN
2 580 2022-03 1.0 NaNhttps://stackoverflow.com/questions/73634940
复制相似问题