Слияние «слева», но переопределите «правые» значения, где это возможноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Слияние «слева», но переопределите «правые» значения, где это возможно

Сообщение Anonymous »

Objective < /h3>

Я рассмотрел документацию Pandas о слиянии, но имею вопрос о эффективном переоценке значений в слиянии «левый». Я могу сделать это просто для одной пары значений (как видно здесь), но он становится загроможденным при попытке сделать несколько пар.a = pd.DataFrame({
'id': [0,1,2,3,4,5,6,7,8,9],
'val': [100,100,100,100,100,100,100,100,100,100]
})

b = pd.DataFrame({
'id':[0,2,7],
'val': [500, 500, 500]
})
< /code>

Я могу их объединить: < /p>

df = a.merge(b, on=['id'], how='left', suffixes=('','_y'))
< /code>

Чтобы получить < /p>

id val val_y
0 0 100 500.0
1 1 100 NaN
2 2 100 500.0
3 3 100 NaN
4 4 100 NaN
5 5 100 NaN
6 6 100 NaN
7 7 100 500.0
8 8 100 NaN
9 9 100 NaN
< /code>

Я хочу сохранить левые значения, где нет правильного значения, но где это возможно перезаписать с правильными значениями. < /p>

my желаемый результат < /strong>: < /p>

id val
0 0 500.0
1 1 100.0
2 2 500.0
3 3 100.0
4 4 100.0
5 5 100.0
6 6 100.0
7 7 500.0
8 8 100.0
9 9 100.0
< /code>

моя попытка < /h3>

Я знаю, что могу сделать это с помощью нескольких строк кода: < /p>

df.loc[df.val_y.notnull(), 'val'] = df[df.val_y.notnull()].val_y
df = df.drop(['val_y'], axis = 1)
< /code>

или я могу использовать логику из этого вопроса. < /p>

Например, используя < /code> и b < /code> ниже: < /p>

a = pd.DataFrame({
'id': [0,1,2,3,4,5,6,7,8,9],
'val': [100,100,100,100,100,100,100,100,100,100],
'val_2':[200, 200, 200, 200, 200, 200, 200, 200, 200, 200]
})
b = pd.DataFrame({
'id':[0,2,7],
'val': [500, 500, 500],
'val_2': [500,500,500]
})
< /code>

Есть ли более более чистый способ получить желаемый результат? < /p>

Подробнее здесь: https://stackoverflow.com/questions/559 ... e-possible
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»