У меня есть существующий DataFrame и метод, который вычисляет несколько столбцов для добавления к этому DataFrame.В настоящее время я использую pd.concat([left, right], axis=1)
.Однако, когда я вызываю этот метод второй раз, он снова добавляет столбцы (с тем же именем).
Со следующими примерами фреймов данных left
и right
:
left = pd.DataFrame({'one': [1, 2, 3], 'two': [2, 3, 4]})
print(left)
one two
0 1 2
1 2 3
2 3 4
right = pd.DataFrame({'one': [22, 22, 22], 'NEW': [33, 33, 33]})
print(right)
one NEW
0 22 33
1 22 33
2 22 33
Я ищу foo
метод, результат которого следующий:
left = left.foo(right) # or foo(left, right)
print(left)
one two NEW
0 22 2 33
1 22 3 33
2 22 4 33
И, что важно, если я вызову left.foo(right)
второй раз, я хочу, чтобы результат не изменился.
pd.join
выдает ошибку, когда столбец уже существует, pd.concat
не перезаписывает существующие столбцы, pd.update
только перезаписывает существующие столбцы, но не добавляет новые.
Есть лифункция / метод, чтобы делать то, что я хочу, или я должен написать сам?
Решение : Решение, которое сработало для меня, в сочетании с двумя ответами ниже,:
result = left.\
drop(left.columns.intersection(right.columns), axis=1).\
join(right)