为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫用另一个数据框列的单元格值更新列,索引重复

熊猫用另一个数据框列的单元格值更新列,索引重复

有只小跳蛙 2023-05-09 10:56:06
有2个dfdf = pd.DataFrame({'A': ['a', 'b', 'a','d','e']},index=[1,2,3,4,5])ndf = pd.DataFrame({'A': ['a', '2', '6','e'],                   'B': ['apple', 'pen', 'sky','duck']},index=[7,8,9,19])df的A列应该像这样用ndf的B列值更新:如果df'A列的值==ndf的A列值,df的A列的单元格值不更新;否则:df 的 A 列的单元格值应替换为 ndf 的 B 列的单元格值:例如:更新后,A 应该是这样的:pd.DataFrame({'A': ['apple', 'b', 'apple','d','duck']},index=[1,2,3,4,5])
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您可以创建一个字典,to_dict然后使用replace:


df.replace(ndf.set_index('A').to_dict()['B'])

输出:


       A

1  apple

2      b

3  apple

4      d

5   duck

详情:


print(ndf.set_index('A'))

A       

a  apple

2    pen

6    sky

e   duck



print(ndf.set_index('A').to_dict())

{'B': {'a': 'apple', '2': 'pen', '6': 'sky', 'e': 'duck'}}



print(ndf.set_index('A').to_dict()['B'])

{'a': 'apple', '2': 'pen', '6': 'sky', 'e': 'duck'}


print(df.replace(ndf.set_index('A').to_dict()['B']))

       A

1  apple

2      b

3  apple

4      d

5   duck


查看完整回答
反对 回复 2023-05-09
?
茅侃侃

TA贡献1842条经验 获得超21个赞

dict从创建ndf,将其映射到df。combine_first将结果用于df.A。


df.A.map(dict(zip(ndf.A,ndf.B))).combine_first(df.A)


1    apple

2        b

3    apple

4        d

5     duck


Step by Step


`d= dict(zip(ndf.A,ndf.B))`#Create dict


df['C']= df.A.map(d)# map dict to df.A


df.A=df.C.combine_first(df.A)#Update df.A


查看完整回答
反对 回复 2023-05-09
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信