如何访问数据框的(多)索引?
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()
现在我有两个数据框(df
和 df2
),我想使用 col1
和 col2
合并它们。我现在遇到的问题是df2
没有这些列。在groupby
操作之后,col1
和 col2
被“转移”到索引。所以,为了解决这个问题,我尝试创建这些列:
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】:您可以使用merge
的left_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)
【讨论】:
以上是关于如何访问数据框的(多)索引?的主要内容,如果未能解决你的问题,请参考以下文章