Pandas – объединить DataFrame, сохранить ненулевые значения в общих столбцах, сохранить среднее значение в другом столбцPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pandas – объединить DataFrame, сохранить ненулевые значения в общих столбцах, сохранить среднее значение в другом столбц

Сообщение Anonymous »

Я работаю с двумя DataFrames, определенными следующим образом:

Код: Выделить всё

import pandas as pd
df1 = pd.DataFrame([[1, 'a', 0.95], [2, 'b', 0.92], [3, 'c',  0.91]], columns=['id','value','similarity'])

df2 = pd.DataFrame([[3, 'c', 0.93], [4, 'd', 0.92], [5, 'e',  0.99]], columns=['id','value','similarity'])

Код: Выделить всё

id  name   similarity
1   a      0.95
2   b      0.92
3   c      0.91

Код: Выделить всё

id  name   similarity
3   c      0.93
4   d      0.92
5   e      0.99
Теперь я хочу объединить оба DataFrame по идентификатору ключевого атрибута, избегая при этом создания NaN в имени столбец. Для этого я использую pd.combine_first, как предложено в этом ответе, чтобы получить следующее:

Код: Выделить всё

df3 = df1.set_index('id').combine_first(df2.set_index('id'))
df3

id  name   similarity
1   a      0.95
2   b      0.92
3   c      0.91
4   d      0.92
5   e      0.99
Однако у меня есть дополнительное требование. Если значение сходства существует в обоих наборах, я хочу принять их среднее значение в качестве нового значения. Например, мой желаемый результат будет выглядеть примерно так:

Код: Выделить всё

id  name  similarity
1   a      0.95
2   b      0.92
3   c      0.92 

Подробнее здесь: [url]https://stackoverflow.com/questions/78305981/pandas-merge-dataframe-keep-non-null-values-on-common-columns-keep-average-o[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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