python - 如何将值映射到具有多列作为键的 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 不必是数据帧的键(即它们不是唯一标识符,这就是为什么我最初想用字典映射它,但由于多个键而失败)
我该怎么做呢?
谢谢你和我一起调查!
解决方案
我找到了解决方案
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)
感谢您调查它!
推荐阅读
- oracle - Oracle-插入查询慢
- javascript - 未捕获的类型错误:视口不是构造函数
- reactjs - Go Api 返回 Unauthorized
- netbeans - Netbeans 中出现了奇怪的字符
- javascript - 检测多个元素上的鼠标悬停事件(JS)
- python - try and if - 赋值前引用的局部变量
- c# - ASP.net Core - SwaggerResponseExample 不输出指定的示例
- r - 在 R 中创建布尔值的聚合
- selenium - Safari 不支持在多线程上执行自动化脚本,
- python - 如何正确使用 StringVar?