从df2中的df1中找到一个值,并替换匹配行的其他值

汤玛士

我有以下带有2个数据帧的代码(df1和df2)

import pandas as pd

data = {'Name': ['Name1', 'Name2', 'Name3', 'Name4', 'Name5'],
        'Number': ['456', 'A977', '132a', '6783r', '868354']}

replace = {'NewName': ['NewName1', 'NewName3', 'NewName4', 'NewName5', 'NewName2'],
        'ID': ['I753', '25552', '6783r', '868354', 'A977']}


df1 = pd.DataFrame(data, columns = ['Name', 'Number'])
df2 = pd.DataFrame(replace, columns = ['NewName', 'ID'])

现在,我想将df1的“数字”列中的每个项目与df2的“ ID”列进行比较。如果存在匹配项,我想用df2的“ NewName”替换df1的“ Name”,否则应保留df1的“ Name”。

首先,我尝试了以下代码,但不幸的是,它在不同行中混合了名称和数字。

df1.loc[df1['Number'].isin(df2['ID']), ['Name']] = df2.loc[df2['ID'].isin(df1['Number']),['NewName']].values

我尝试的下一个代码工作得更好,但是如果没有匹配项,它将df1的“名称”替换为df1的“数字”。

df1['Name'] = df1['Number'].replace(df2.set_index('ID')['NewName'])

如何在我的上一个代码中停止这种行为,或者通常有更好的方法实现我想做的事情?

Shubham Sharma

可以使用map,而不是replace代替列中的每个值Numberdf1从相应的值NewName在列df2然后fillNaN(其不能被取代的值)与从原始值映射列Name在列df1

df1['Name'] = df1['Number'].map(df2.set_index('ID')['NewName']).fillna(df1['Name'])

>>> df1

       Name  Number
0     Name1     456
1  NewName2    A977
2     Name3    132a
3  NewName4   6783r
4  NewName5  868354

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从df2中的df1中找到一个值,并替换匹配行的其他值

来自分类Dev

如何对df1中的值与df2中的另一个值进行匹配

来自分类Dev

如何对df1中的值与df2中的另一个值进行匹配

来自分类Dev

从DF1中选择行,其中列值与DF2中列的值匹配

来自分类Dev

如何根据其他三列中的特定值将值从df1中的一列复制到df2?

来自分类Dev

根据2个数据帧(df1,df2)之间的匹配列更新一个DF(df1)的行

来自分类Dev

根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

来自分类Dev

当df1中的键列与df2中的多个列匹配时,用另一个dataframe(df2)列中的值更新dataframe(df1)列

来自分类Dev

使用df1中的值从df2中检索值,其中df2列和索引包含一系列值

来自分类Dev

尝试将df1中的每一行与df1中的其他多行匹配

来自分类Dev

仅当df2中的列中的值位于df1中时,才将2个数据帧附加在一起

来自分类Dev

如果两个不同数据框中两列的值匹配,则将 df2 中另一列的值复制到 df1 中的列

来自分类Dev

仅当df1中的行ID值也存在于df2中时才追加行

来自分类Dev

从df2中提取与df1的两列信息匹配的所有行

来自分类Dev

如果df2中的loc为True,则df1中的python和值

来自分类Dev

反向代码以df2中的查找值为条件选择df1中的vars

来自分类Dev

合并两个data.frames并将df1的某些列的值替换为df2的值

来自分类Dev

R用其他df2的名称替换df1的名称元素

来自分类Dev

Python将数据从1个df复制到其他df中的第一个匹配行

来自分类Dev

检查df2中的datetime列的值是否在R中的df1的datateime值之内

来自分类Dev

根据df1上的条件创建pd系列,并报告df2或df3中的值

来自分类Dev

如果列的valueS存在于其他数据框df2中,则从数据框df1中删除行

来自分类Dev

根据R中df1和df2之间的匹配在df1中添加新列

来自分类Dev

在df1中的键数组中在df2中查找键,并合并对应的值

来自分类Dev

在 df1 中创建一个新的分类变量,它考虑了一个 df1 变量和多个具有多个条件的 df2 变量

来自分类Dev

根据df2中的索引将行保留在df1中

来自分类Dev

Pandas:如何正确处理 df2 中的行 = df1 中的列?

来自分类Dev

如何选择数据帧“ df1”的连续行,其值与向量“ A”中的值匹配

来自分类Dev

根据行不匹配的另一个DF中的值更改一个DF中的值

Related 相关文章

  1. 1

    从df2中的df1中找到一个值,并替换匹配行的其他值

  2. 2

    如何对df1中的值与df2中的另一个值进行匹配

  3. 3

    如何对df1中的值与df2中的另一个值进行匹配

  4. 4

    从DF1中选择行,其中列值与DF2中列的值匹配

  5. 5

    如何根据其他三列中的特定值将值从df1中的一列复制到df2?

  6. 6

    根据2个数据帧(df1,df2)之间的匹配列更新一个DF(df1)的行

  7. 7

    根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

  8. 8

    当df1中的键列与df2中的多个列匹配时,用另一个dataframe(df2)列中的值更新dataframe(df1)列

  9. 9

    使用df1中的值从df2中检索值,其中df2列和索引包含一系列值

  10. 10

    尝试将df1中的每一行与df1中的其他多行匹配

  11. 11

    仅当df2中的列中的值位于df1中时,才将2个数据帧附加在一起

  12. 12

    如果两个不同数据框中两列的值匹配,则将 df2 中另一列的值复制到 df1 中的列

  13. 13

    仅当df1中的行ID值也存在于df2中时才追加行

  14. 14

    从df2中提取与df1的两列信息匹配的所有行

  15. 15

    如果df2中的loc为True,则df1中的python和值

  16. 16

    反向代码以df2中的查找值为条件选择df1中的vars

  17. 17

    合并两个data.frames并将df1的某些列的值替换为df2的值

  18. 18

    R用其他df2的名称替换df1的名称元素

  19. 19

    Python将数据从1个df复制到其他df中的第一个匹配行

  20. 20

    检查df2中的datetime列的值是否在R中的df1的datateime值之内

  21. 21

    根据df1上的条件创建pd系列,并报告df2或df3中的值

  22. 22

    如果列的valueS存在于其他数据框df2中,则从数据框df1中删除行

  23. 23

    根据R中df1和df2之间的匹配在df1中添加新列

  24. 24

    在df1中的键数组中在df2中查找键,并合并对应的值

  25. 25

    在 df1 中创建一个新的分类变量,它考虑了一个 df1 变量和多个具有多个条件的 df2 变量

  26. 26

    根据df2中的索引将行保留在df1中

  27. 27

    Pandas:如何正确处理 df2 中的行 = df1 中的列?

  28. 28

    如何选择数据帧“ df1”的连续行,其值与向量“ A”中的值匹配

  29. 29

    根据行不匹配的另一个DF中的值更改一个DF中的值

热门标签

归档