Объединять кадры данных по общему столбцу, но вместе добавлять столбцы с одинаковым заголовком - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь выяснить, как объединить два кадра данных по общему столбцу, а затем сложить вместе другие аналогичные столбцы.

Входные данные

df1 = pd.DataFrame({'timestamp': [0, 1, 2, 3], 'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'timestamp': [0, 1, 3], 'value': [2, 2, 2]})

Результат

df3 = {'timestamp': [0, 1, 2, 3], 'value': [3, 4, 3, 6]}

, потому что

1 + 2 = 3
2 + 2 = 4
3 + 0 = 3
4 + 2 = 6

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете установить timestamp в качестве индекса и добавить кадры данных вместе.Вам нужно будет использовать add с fill_value, установленным на 0 для отсутствующих точек данных:

df1 = df1.set_index('timestamp')
df2 = df2.set_index('timestamp')
result = df1.add(df2, fill_value=0)

result

           value
timestamp       
0            3.0
1            4.0
2            3.0
3            6.0

Если вы хотите сохранить timestamp в качестве столбца, просто используйте reset_index дляпереместите его назад:

result.reset_index()

   timestamp  value
0          0    3.0
1          1    4.0
2          2    3.0
3          3    6.0
0 голосов
/ 05 февраля 2019

Вы можете использовать concat + groupby :

import pandas as pd

df1 = pd.DataFrame({'timestamp': [0, 1, 2, 3], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'timestamp': [0, 1, 3], 'value': [2, 2, 2]})

r = pd.concat([df1, df2]).groupby('timestamp', as_index=False).sum()

print(r)

Выход

   timestamp  value
0          0      3
1          1      4
2          2      3
3          3      6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...