【问题标题】:Search and replace matching values across data frames in Python在 Python 中跨数据帧搜索和替换匹配值
【发布时间】:2018-11-29 12:37:26
【问题描述】:

我有以下 Pandas 数据框:

df1:

C   D   E   F   G
111 222 333 444 555
666 777

df2:

A    B 
111  3
222  4
333  3
444  3
555  4
100  3
666  4
200  3
777  3

我需要在 df2 中查找以从 df1.A 中查找匹配值然后将 df1 中的值替换为 df2.B 中的配对值

所以需要的输出是:

C   D   E   F   G
3   4   3   3   4
4   3

我尝试了左合并并想尝试重新调整值,但认为必须有一个更简单/更清晰的直接搜索和替换方法。非常感谢任何帮助。

【问题讨论】:

    标签: python pandas dataframe search replace


    【解决方案1】:

    首先创建一个系列映射:

    s = df2.set_index('A')['B']
    

    然后将其应用于每个值:

    df1 = df1.applymap(s.get)
    

    【讨论】:

      【解决方案2】:

      试试这个,

      temp=df2.set_index('A')['B']
      print df1.replace(temp)
      

      输出:

         C  D    E    F    G
      0  3  4  3.0  3.0  4.0
      1  4  3  NaN  NaN  NaN
      

      【讨论】:

      • 我正在使用 python 2.x :)
      • 几点注意事项:(1) pd.DataFrame.replace 接受一个系列,因此不需要 dict 转换,(2) map usually outperforms replace
      • @jpp - 感谢您更新解决方案的帮助 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多