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]

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