【问题标题】: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' 未被识别为数据框的列。

【问题讨论】:

    标签: indexing group-by pandas


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2019-10-28
        • 2017-01-28
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2019-05-27
        • 2018-12-09
        相关资源
        最近更新 更多