#python #pandas
#питон #панды #python #pandas
Вопрос:
В настоящее время я работаю над серией фреймов данных и хотел бы объединить их и вывести новый объединенный фрейм данных. И числовые столбцы также должны возвращать среднее значение.
Оригинал:
Dataframe 1
account counts
1 123 1
2 777777 2
3 666 3
4 555 4
Dataframe 2
account counts
1 123 5
2 666666 2
3 444 3
4 555 2
Merged on 'account'
account counts
1 123 3
2 555 3
Ответ №1:
import pandas as pd
df1 = pd.DataFrame({'account': [123, 777777, 666, 555], 'counts': [1, 2, 3, 4]})
df2 = pd.DataFrame({'account': [123, 666666, 444, 555], 'counts': [5, 2, 3, 2]})
df = pd.merge(df1, df2, how='inner', on=['account'], suffixes=['1','2'])
df['counts'] = df[['counts1','counts2']].mean(axis=1)
df.drop(columns=['counts1','counts2'], inplace=True)
>>> df
account counts
0 123 3.0
1 555 3.0
Ответ №2:
Вы могли бы просто добавить фреймы данных и разделить на 2, например:
In []:
df = df1.set_index('account').add(df2.set_index('account')).dropna() // 2
df
Out[]:
counts
account
123 3.0
555 3.0
Или, если вам важно, что account
это столбец, тогда просто reset_index()
:
In []:
df.reset_index()
Out[]:
account counts
0 123 3.0
1 555 3.0