2

我有一个数据框并使用它的一些列来group by

grouped = df.groupby(['col1', 'col2'])

现在我使用mean函数从上面创建的 groupby 对象中获取一个新的数据框对象:

df_new = grouped.mean()

现在我有两个数据框 ( dfand df2),我想使用col1and合并它们col2。我现在遇到的问题是df2没有这些列。groupby操作后又被“转移”到索引col1col2所以,为了解决这个问题,我尝试创建这些列:

df2['col1'] = df2['index'][0]
df2['col2'] = df2['index'][1]

但它不起作用,因为“索引”未被识别为数据框的列。

4

2 回答 2

3

作为替代安迪海登的方法,您可以使用as_index=False将列保留为列而不是索引:

df2 = df.groupby(['col1', 'col2'], as_index=False).mean()
于 2013-05-23T12:48:58.537 回答
2

您可以使用left_index(或right_index)参数merge

left_index: boolean, default False
       使用左侧 DataFrame 中的索引作为连接键。
       如果是 MultiIndex,则另一个 DataFrame 中的键数(索引或列数)必须与级别数匹配

并用于right_on确定它应该与哪些列合并索引。

所以它会是这样的:

pd.merge(df, df_new, left_on=['col1', 'col2'], right_index=True)
于 2013-05-23T12:44:40.370 回答