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
Слияние «слева», но переопределите «правые» значения, где это возможно ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Мауи андроид. Либо установите MainPage, либо переопределите CreateWindows.
Anonymous » » в форуме Android - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-