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

Posted

技术标签:

【中文标题】如何访问数据框的(多)索引?【英文标题】:How to access (multi)index of a Data Frame? 【发布时间】:2013-05-18 19:53:22 【问题描述】:

我有一个数据框并使用它的一些列来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' 未被识别为数据框的列。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

所以它会是这样的:

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

【讨论】:

以上是关于如何访问数据框的(多)索引?的主要内容,如果未能解决你的问题,请参考以下文章

多页中文本框的访问地址

对 pandas 数据框的索引查找。为何这么慢?如何加快速度? [复制]

Oracle数据访问和索引的使用

如何使用 setfilter 和基于组合框的访问报告?

python多处理子进程无法访问全局变量

访问熊猫数据框的正确方法[重复]