python – Pandas从其他数据帧复制值
发布时间:2020-12-20 11:43:17 所属栏目:Python 来源:网络整理
导读:Pandas数据帧df1包含值A的列表 df1 = pd.DataFrame({'A':['a','a','b']}) A0 a1 a2 b 可以将数据帧df2视为从A中的值到B中的值的映射 df2 = pd.DataFrame({'A':['a','b'],'B':[2,3]}) A B0 a 21 b 3 我想将映射应用于df1.我的工作版本是这个,但我觉得有可能改
Pandas数据帧df1包含值A的列表
df1 = pd.DataFrame({'A':['a','a','b']}) A 0 a 1 a 2 b 可以将数据帧df2视为从A中的值到B中的值的映射 df2 = pd.DataFrame({'A':['a','b'],'B':[2,3]}) A B 0 a 2 1 b 3 我想将映射应用于df1.我的工作版本是这个,但我觉得有可能改进,因为我发现我的解决方案不可读,我不确定它如何推广到多索引 df2.set_index('A').loc[df1.set_index('A').index].reset_index() A B 0 a 2 1 a 2 2 b 3 我也可以将df2转换为字典并使用替换方法,但它也不能说服我. 解决方法
这有一个
map 函数,它接受一个dict或系列,后者使用索引来执行查找:
In [94]: df1['A'].map(df2.set_index('A')['B']) Out[94]: 0 2 1 2 2 3 Name: A,dtype: int64 In [93]: %timeit df1['A'].map(df2.set_index('A')['B']) %timeit df1.merge(df2,on='A') 1000 loops,best of 3: 718 μs per loop 1 loops,best of 3: 1.31 ms per loop 在您的测试数据上, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |