我有一个数据框并将其一些列用于group by
:
grouped = df.groupby(['col1', 'col2'])
现在我使用mean
函数从上面创建的groupby对象中获取一个新的数据框对象:
df_new = grouped.mean()
现在我有两个数据框(df
和df2
),我想使用col1
和col2
合并它们。我现在遇到的问题是df2
没有这些列。在groupby
操作col1
和col2
被“转移”到索引后。因此,要解决此问题,我尝试创建这些列:
df2['col1'] = df2['index'][0]
df2['col2'] = df2['index'][1]
但它不起作用,因为'index'不被识别为数据框的一列。
答案 0 :(得分:3)
作为Andy Hayden的替代方法,您可以使用as_index=False
将列保留为列而不是索引:
df2 = df.groupby(['col1', 'col2'], as_index=False).mean()
答案 1 :(得分:2)
您可以使用merge
的left_index
(或right_index
)个参数:
left_index
:布尔值,默认为False
使用左侧DataFrame中的索引作为连接键 如果是MultiIndex,则是其他DataFrame中的键数(索引 或多个列)必须与级别数匹配
并使用right_on
确定应将索引与哪些列合并。
所以它会像:
pd.merge(df, df_new, left_on=['col1', 'col2'], right_index=True)