Слияние фреймов данных с pandas с двумя ключами - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть два набора данных, один с отдельными отчетами и один с региональными условиями. Есть гораздо больше отдельных строк, чем региональных, но я хочу добавить региональные данные для каждого человека. Проблема, с которой я сталкиваюсь, заключается в том, что я должен объединиться, используя два первичных ключа, например

Индивидуальный - 5000 строк
Код | Время | Данные1 | Данные2 | Данные3

Региональные - 100 строк
Код | Время | RData1 | RData2

- Я попытался и потерпел неудачу, используя:

df = individual.merge(regional, how='left', on=['Code', 'Time'])

- Что оставляет RData1,2 как нулевые значения в новом df, что делает его заслугой похожей на

df - 5000 строк
Код | Время | Данные1 | Данные2 | Data3 | RData1 | RData2

но нулевые значения мне не помогают ...

Пример данных
То, что я вижу

1 Ответ

0 голосов
/ 03 апреля 2020

Данные

Генерация случайного df

 rng = pd.date_range('2015-02-24', periods=5, freq='T')
    df = pd.DataFrame({ 'Time': rng, 'data1': np.random.randn(len(rng)),'code':[201, 897,345, 70,879] }) 
    df.set_index(['Time','code'], inplace=True)
    df

Генерация случайного df1

df1 = pd.DataFrame({ 'Time': rng, 'data1': np.random.randn(len(rng)),'code':[201, 30,345, 70,879] }) 
df1.set_index(['Time','code'], inplace=True)
df1

объединение по индексам может быть выполнено следующим образом

result =df1.merge(df, left_index=True, right_index=True, suffixes=('_Left','_Right'))
result

Или лучше

result =pd.merge(df, df1,left_index=True, right_index=True, suffixes=('_Left','_Right'))
result
...