使用熊猫合并索引

时间:2020-02-17 07:53:20

标签: python pandas

我有一个看起来像这样的数据框

>>> df
          item  count
id  month 
12  1     1351  19
          585   11 
    2     1350  2
          140   1

和另一个类似

的东西
>>> usermap
   id   age   gender
0  2    25    m
1  12   40    f

最终结果应为:

>>> df_merged
id  age  gender month  item  count
12  40   f       1     1351  19
                       585   11 
                 2     1350  2
                       140   1

我想我可以做:

df1 = df.reset_index()
df_merged = pd.merge(df1, usermap, on='id', how='left')
df_merged = df_merged.set_index(['id','age','gender','month'])

但是还有什么更好的解决方案,尤其是对于大型数据帧?

1 个答案:

答案 0 :(得分:3)

一个带有DataFrame.joinDataFrame.set_indexDataFrame.reorder_levels的想法:

df = (df.join(usermap.set_index('id'))
        .set_index(['age','gender'], append=True)
        .reorder_levels(['id','age','gender','month']))
print (df)
                     item  count
id age gender month             
12 40  f      1      1351     19
              1       585     11
              2      1350      2
              2       140      1