Pandas поиск замены с использованием двух наборов данных - PullRequest
1 голос
/ 28 февраля 2020

У меня есть ситуация, когда мне нужно искать заменяющие значения, используя два набора данных на основе первого столбца или 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 столбец индекса, а затем значения из df2 должны быть заменены в df1.

Как этого добиться?

1 Ответ

2 голосов
/ 28 февраля 2020

Использовать DataFrame.replace с помощью Series, созданный для выбора:

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

Если существуют все значения и по умолчанию RangeIndex в df2, вы можете повысить производительность, проиндексировав в 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
...