объединить два фрейма данных и добавить числовые значения в столбцы

#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