在python中使用multiindex合并多个数据框

Posted

技术标签:

【中文标题】在python中使用multiindex合并多个数据框【英文标题】:Merge multiple dataframes using multiindex in python 【发布时间】:2019-08-30 16:47:59 【问题描述】:

我有 3 个系列,它们是由下面显示的代码生成的。我在下面展示了一个系列的代码

我想使用列(subject_id、hadm_id、icusstay_id)合并 3 个这样的系列/数据框,但不幸的是,这些标题不会显示为列名。如何将它们转换为列并使用它们与另一个类似数据类型的系列/数据框合并

我正在根据下面给出的条件从另一个数据帧 (df) 生成系列。虽然我已经尝试将此系列转换为数据框,但它仍然不显示索引,而是将列名显示为索引。我在下面显示了输出。我希望将值 'Subject_id'、'hadm_id'、'icusstay_id' 与其他列 'val_bw_80_110' 一起作为数据框中的列名,以便我可以使用这 3 个 id ('Subject_id'、'hadm_id' ,'icusstay_id')

s1 = 
df.groupby(['subject_id','hadm_id','icustay_id'['val_bw_80_110'].mean()

我希望得到一个输出,其中 id (subject_id,hadm_id,icusstay_id) 被转换为列名,并可用于加入/合并其他数据框。

【问题讨论】:

【参考方案1】:

您可以将参数as_index=False添加到DataFrame.groupby或使用Series.reset_index

df = df.groupby(['subject_id','hadm_id','icustay_id'], as_index=False)['val_bw_80_110'].mean()

或者:

df = df.groupby(['subject_id','hadm_id','icustay_id'])['val_bw_80_110'].mean().reset_index()

【讨论】:

以上是关于在python中使用multiindex合并多个数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MultiIndex 合并两个数据框?

合并两个具有重叠 MultiIndex 列的 DataFrame

合并 pandas MultiIndex 很慢

在 Pandas 中将两个 MultiIndex 级别合并为一个

Pandas 将 CSV 中的 SingleIndex 合并到 MultiIndex

合并两个 pandas.core.indexes.multi.MultiIndex