首页 > 解决方案 > 如何将值映射到具有多列作为键的 DataFrame?

问题描述

我有两个这样的数据框:

    data = {'A': [3, 2, 1, 0], 'B': [1, 2, 3, 4]}
    data2 = {'A': [3, 2, 1, 0, 3, 2], 'B': [1, 2, 3, 4, 20, 2], 'C':[5,3,2,1, 5, 1]}
    df1 = pd.DataFrame.from_dict(data)
    df2 = pd.DataFrame.from_dict(data2)

现在我为 C 做了一个 df2 的 groupby

values_to_map = df2.groupby(['A', 'B']).mean().to_dict()

现在我想映射df1['new C']列 A 和 B 匹配的位置。

A   B   new_C
0   3   1   1.0
1   2   2   2.0
2   1   3   2.0
3   0   4   12.5

其中 new c 基本上是C每对A, B的平均值df2

请注意,A 和 B 不必是数据帧的键(即它们不是唯一标识符,这就是为什么我最初想用字典映射它,但由于多个键而失败)

我该怎么做呢?

谢谢你和我一起调查!

标签: pythonpandas

解决方案


我找到了解决方案

values_to_map = df2.groupby(['A', 'B']).mean().to_dict()

df1['new_c'] = df1.apply(lambda x: values_to_map[x['A'], x['B']], axis=1)

感谢您调查它!


推荐阅读