将数值从一个数据框架映射到另一个数据框架[英] Mapping values from one DataFrame to another

本文是小编为大家收集整理的关于将数值从一个数据框架映射到另一个数据框架的处理方法,想解了将数值从一个数据框架映射到另一个数据框架的问题怎么解决?将数值从一个数据框架映射到另一个数据框架问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试找出一些快速而干净的方法来将值从一个 DataFrame A 映射到另一个.假设我有 DataFrame 这样的:

    C1  C2  C3  C4  C5
1   a   b   c   a
2   d   a   e   b   a
3   a   c
4   b   e   e

现在我想将这些字母代码更改为实际值.我的 DataFrame B 解释如下:

    Code    Value
1   a       'House'
2   b       'Bike'
3   c       'Lamp'
4   d       'Window'
5   e       'Car'

到目前为止,我的蛮力方法是遍历 A 中的每个元素,并使用 isin() 检查 B 中的值.我知道我也可以使用 Series (或简单字典)作为 B 而不是 DataFrame 并使用例如 Code 列作为索引.但我仍然需要使用多个循环来映射所有内容.

还有其他好的方法可以实现我的目标吗?

推荐答案

另一种选择是 地图.虽然它需要遍历列,但如果我没有搞砸测试,它仍然比替换更快:

A = pd.DataFrame(np.random.choice(list("abcdef"), (1000, 1000)))
B = pd.DataFrame({'Code': ['a', 'b', 'c', 'd', 'e'],
                  'Value': ["'House'", "'Bike'", "'Lamp'", "'Window'", "'Car'"]})
B = B.set_index("Code")["Value"]
<小时>
%timeit A.replace(B)
1 loop, best of 3: 970 ms per loop
<小时>
C = pd.DataFrame()

%%timeit
for col in A:
    C[col] = A[col].map(B).fillna(A[col])
1 loop, best of 3: 586 ms per loop

本文地址:https://www.itbaoku.cn/post/1728175.html