【问题标题】:Pandas search replace using two datasetsPandas 使用两个数据集进行搜索替换
【发布时间】:2020-02-28 11:44:42
【问题描述】:

我有一种情况,我需要根据第一列或 pandas 默认索引使用两个数据集来搜索替换值。 我的 df1 :

  id1  id2   id3   id4
0   1    2     3    4
1   3    4     5    6

我的 df2

  id_df2
0    500
1   1000
2   2000
3   3000
4   4000
5   5000
6   6000 

最终的 df 应该是这样的:

         id1     id2      id3     id4
    0    1000    2000     3000    4000
    1    3000    4000     5000    5000

必须使用 pandas 默认索引列进行搜索,然后应在 df1 中替换 df2 中的值。

如何做到这一点?

【问题讨论】:

    标签: python-3.x pandas replace match


    【解决方案1】:

    使用DataFrame.replace by Series 创建选择:

    df = df1.replace(df2['id_df2'])
    print (df)
        id1   id2   id3   id4
    0  1000  2000  3000  4000
    1  3000  4000  5000  6000
    

    如果在df2 中存在所有值和默认RangeIndex,您可以通过在numpy 中建立索引来提高性能,然后通过构造函数创建新的DataFrame

    arr = df2['id_df2'].to_numpy()[df1.to_numpy()]
    print (arr)
    [[1000 2000 3000 4000]
     [3000 4000 5000 6000]]
    
    df = pd.DataFrame(arr, index=df1.index, columns=df1.columns)
    print (df)
        id1   id2   id3   id4
    0  1000  2000  3000  4000
    1  3000  4000  5000  6000
    

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2021-05-07
      • 1970-01-01
      • 2021-06-09
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多