如何访问数据框的(多)索引?

时间:2013-05-23 12:39:59

标签: indexing group-by pandas

我有一个数据框并将其一些列用于group by

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

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

df_new = grouped.mean()

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

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

但它不起作用,因为'index'不被识别为数据框的一列。

2 个答案:

答案 0 :(得分:3)

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

df2 = df.groupby(['col1', 'col2'], as_index=False).mean()

答案 1 :(得分:2)

您可以使用mergeleft_index(或right_index)个参数:

  

left_index:布尔值,默认为False
  使用左侧DataFrame中的索引作为连接键          如果是MultiIndex,则是其他DataFrame中的键数(索引       或多个列)必须与级别数匹配

并使用right_on确定应将索引与哪些列合并。

所以它会像:

pd.merge(df, df_new, left_on=['col1', 'col2'], right_index=True)