Как объединить два перекрывающихся кадра данных - PullRequest
0 голосов
/ 10 июня 2018

Мне нужно написать код, который принимает новые кадры данных и объединяет их с существующими.Строки упорядочены по дате, но, к сожалению, часто они совпадают.Например,

    Transaction_Date    transaction
1330    26/05/2017  2997.71
1327    30/05/2017  -1394.59
1329    30/05/2017  -2650.00
1328    30/05/2017  664.00

и

1329    30/05/2017  -2650.00
1328    30/05/2017  664.00
1326    31/05/2017  374.79
1324    01/06/2017  -160.00
1325    01/06/2017  -27.62

Скажите, что первый фрейм данных называется df1, а второй - df2, как я могу объединить их, чтобы избавиться от дубликатов вперекрывающаяся часть?

Ожидаемый результат должен быть:

    Transaction_Date    transaction
1330    26/05/2017  2997.71
1327    30/05/2017  -1394.59
1329    30/05/2017  -2650.00
1328    30/05/2017  664.00
1326    31/05/2017  374.79
1324    01/06/2017  -160.00
1325    01/06/2017  -27.62

1 Ответ

0 голосов
/ 10 июня 2018

Я считаю нужным concat с удалением дубликатов по значениям индекса на duplicated с boolean indexing:

df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]

Полный пример:

import pandas as pd

df = pd.DataFrame({
    'date': pd.date_range('2018-01-01', periods=7, freq='12H'),
    'index': [1330, 1327, 1329, 1328, 1326, 1324, 1325]
}).set_index('index')

df1 = df.iloc[[0,1,2,3]]
df2 = df.iloc[[2,3,4,5,6]]

df = pd.concat([df1, df2])
df = df[~df.index.duplicated()]

print(df)

Возвращает:

                     date
index                    
1330  2018-01-01 00:00:00
1327  2018-01-01 12:00:00
1329  2018-01-02 00:00:00
1328  2018-01-02 12:00:00
1326  2018-01-03 00:00:00
1324  2018-01-03 12:00:00
1325  2018-01-04 00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...