Проблемы слияния панд - PullRequest
       20

Проблемы слияния панд

0 голосов
/ 24 апреля 2018

У меня есть два кадра данных

df1

    KO-ST  1_UID      2_Vloge
0   1976-_  200106897  200106897.0
1    991-_  200108737  200108737.0
2  2147---  200109776  200109776.0
3   2048-_  200300912  200300912.0
4   2194-_  200301057  200301057.0
5  2386---  200301312  200301312.0
6   2002-_  200301315  200301315.0
7   1324-_  200301573  200301573.0
8   1625-45  200301868  200301868.0
9   1625-_  200301868  200301868.0
...

df2
                              a                    b
SID  KO-ST                                     
10000002 851-601          288.0                288.0
10000003 851-1             68.0                 68.0
10000328 853-103           64.5                 64.5
10000583 861-25            30.1                 30.1
10001002 2590-1            96.7                178.9
10001004 2593-2           349.2                349.2
10001005 2593-3           282.0                295.2
10001006 2593-4           121.5                121.5
10001008 2593-6           109.3                110.3
10001009 2593-7             9.9                  9.9
...

Существует более 500 000 строк, где KO-ST уникально и SID может быть повторено.Я пытаюсь сгруппировать их и повторить значения из столбцов a и b.Значения от KO-ST уникальны и в 10% случаев - не идеальны, и в этом случае (например, 1324 -___) в df2 совпадений не будет.

Мой исходный код

REN_ES = pd.merge(df1, df2, left_index=True, on = 'KO-ST')

Но я получаю ошибку:

KeyError: 'KO-ST'

Где я ошибся?df1 является результатом импорта двух CSV-файлов и объединения и объединения некоторых значений.Для упрощения обработки данных столбец KO-ST был добавлен в виде комбинации двух столбцов с функцией:

DS_STA['KO-ST'] =DS_STA['KO_SIFKO'].map(str) + "-" + DS_STA['STEV'].map(str)

KO-SIFKO и STEV - целые числа, отсюда и код.Я добавил это, потому что подозреваю, что что-то не так с распознаванием типов данных.

1 Ответ

0 голосов
/ 24 апреля 2018

df2 имеет мультииндекс, а "KO-ST" не является именем столбца. left_index=True перезаписывает on'KO-ST", так что удалите это. попробуй:

REN_ES = pd.merge(df1, df2.reset_index(), on = 'KO-ST')
...