将值从一个数据帧映射到另一个数据帧

2024-10-06 08:04:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在我想把这些字母代码改成实际值。我的DataFrameB的解释如下:

^{pr2}$

到目前为止,我的暴力方法是遍历A中的每个元素,并用isin()检查B中的值。也可以将

有没有其他更好的方法来实现我的目标?在


Tags: 方法代码元素dataframe字母c2c1暴力
2条回答

{a1}是另一种选择。虽然它需要在列上循环,但如果我没有搞乱测试,它仍然比replace快:

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"]

^{pr2}$
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

您可以使用^{}

A.replace(B.set_index('Code')['Value'])

^{pr2}$

收益率

         C1       C2      C3       C4       C5
0   'House'   'Bike'  'Lamp'  'House'         
1  'Window'  'House'   'Car'   'Bike'  'House'
2   'House'   'Lamp'                          
3    'Bike'    'Car'   'Car'                  

相关问题 更多 >