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

有2个df


df = 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])


有只小跳蛙
浏览 113回答 2
2回答

慕的地6264312

您可以创建一个字典,to_dict然后使用replace:df.replace(ndf.set_index('A').to_dict()['B'])输出:       A1  apple2      b3  apple4      d5   duck详情:print(ndf.set_index('A'))A       a  apple2    pen6    skye   duckprint(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']))       A1  apple2      b3  apple4      d5   duck

茅侃侃

dict从创建ndf,将其映射到df。combine_first将结果用于df.A。df.A.map(dict(zip(ndf.A,ndf.B))).combine_first(df.A)1    apple2        b3    apple4        d5     duckStep by Step`d= dict(zip(ndf.A,ndf.B))`#Create dictdf['C']= df.A.map(d)# map dict to df.Adf.A=df.C.combine_first(df.A)#Update df.A
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python