Объедините два кадра данных в Pandas, взяв среднее между столбцами - PullRequest
0 голосов
/ 13 мая 2018

У меня есть следующие данные:

df1

          C1    C2     C3
    0     0     0      0
    1     0     0      0

df2

          C1    C4     C5
    0     1     1      1
    1     1     1      1

Результат, который я ищу:

DF3

          C1    C2     C3    C4    C5
    0     0.5    0      0     1     1
    1     0.5    0      0     1     1

Есть ли простой способ сделать это?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

DataFrame.add

df3 = df2.add(df1, fill_value=0)
df3[df1.columns.intersection(df2.columns)] /= 2

    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0

concat + groupby

pd.concat([df1, df2], axis=1).groupby(axis=1, level=0).mean()
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0
0 голосов
/ 13 мая 2018

Вы можете использовать concat и groupby axis = 1

s=pd.concat([df1,df2],axis=1)
s.groupby(s.columns.values,axis=1).mean()
Out[116]: 
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0

Хорошая альтернатива от @ cᴏʟᴅsᴘᴇᴇᴅ

s.groupby(level=0,axis=1).mean()
Out[117]: 
    C1   C2   C3   C4   C5
0  0.5  0.0  0.0  1.0  1.0
1  0.5  0.0  0.0  1.0  1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...