проблема с использованием merge_asof из Pandas - PullRequest
0 голосов
/ 10 октября 2018

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

DF1 =

 Inflow
0  9810998109
1  5591255912
2  7394273942
3  7866678666
4  1820118202
5  9812198109
6  9810998101
7  4304043040
8  9810998121

DF2 =

       Inflow  mi_to_zcta5
0  3371433756    11.469054
1  1790118201    24.882142

Я хотел бы выполнить операцию, где я могу объединить этидва кадра данных в столбце «Приток».Вроде как попытка воссоздать функцию VLookUp Excel с приблизительным соответствием (как показано в в этом вопросе ).Но я получаю неудачу каждый раз.Вот строка, которую я пытался использовать для этой цели:

test = pd.merge_asof(DF1, DF2, on = 'mi_to_zcta5')

Я пытался использовать дополнительные настройки, например, «allow_exact_matches», установленный в «False», но мне это не удалось.

Это ошибка, которую я получаю:

 return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas\_libs\index.pyx", line 132, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5280)
  File "pandas\_libs\index.pyx", line 154, in pandas._libs.index.IndexEngine.get_loc (pandas\_libs\index.c:5126)
  File "pandas\_libs\hashtable_class_helper.pxi", line 1210, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20523)
  File "pandas\_libs\hashtable_class_helper.pxi", line 1218, in pandas._libs.hashtable.PyObjectHashTable.get_item (pandas\_libs\hashtable.c:20477)
KeyError: 'mi_to_zcta5'

Я хотел бы получить фрейм данных с 10 строками, со столбцом "Приток" и дополнительным столбцом "mi_to_zcta5" ссоответствующее ближайшее значение (если это возможно).Точно так же, как в VLookUp в Excel, используя приблизительное совпадение.

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

1 Ответ

0 голосов
/ 10 октября 2018

Это ваше решение:

В вашем первом dataFrame (df1) у вас есть только столбец, в то время как у Second (df2) есть два, при выполнении pd.merge вы должны выбрать outer, который является объединениемиз ключей.Это означает, что все индексы показаны, и там, где отсутствуют пропущенные столбцы, они сохраняют их как NaN.

>>> df1
       Inflow
0  9810998109
1  5591255912
2  7394273942
3  7866678666
4  1820118202
5  9812198109
6  9810998101
7  4304043040
8  9810998121
>>> df2
       Inflow  mi_to_zcta5
0  3371433756    11.469054
1  1790118201    24.882142
>>>
>>>
>>>
>>> pd.merge( df1, df2, on=['Inflow'], how='outer')
        Inflow  mi_to_zcta5
0   9810998109          NaN
1   5591255912          NaN
2   7394273942          NaN
3   7866678666          NaN
4   1820118202          NaN
5   9812198109          NaN
6   9810998101          NaN
7   4304043040          NaN
8   9810998121          NaN
9   3371433756    11.469054
10  1790118201    24.882142

Примечание: вы не можете объединить ключ 'mi_to_zcta5, поскольку его нет в df

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...