2024-10-06 08:04:28 发布
网友
我正在尝试找到一些快速而干净的方法来将值从一个DataFrameA映射到另一个。假设我有一个DataFrame像这个:
DataFrame
A
C1 C2 C3 C4 C5 1 a b c a 2 d a e b a 3 a c 4 b e e
现在我想把这些字母代码改成实际值。我的DataFrameB的解释如下:
B
到目前为止,我的暴力方法是遍历A中的每个元素,并用isin()检查B中的值。也可以将有没有其他更好的方法来实现我的目标?在
isin()
有没有其他更好的方法来实现我的目标?在
{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"]
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'])
收益率
C1 C2 C3 C4 C5 0 'House' 'Bike' 'Lamp' 'House' 1 'Window' 'House' 'Car' 'Bike' 'House' 2 'House' 'Lamp' 3 'Bike' 'Car' 'Car'
{a1}是另一种选择。虽然它需要在列上循环,但如果我没有搞乱测试,它仍然比replace快:
^{pr2}$
您可以使用^{} :
^{pr2}$
收益率
相关问题 更多 >
编程相关推荐