Пользовательская функция не работает с Pandas - PullRequest
1 голос
/ 08 февраля 2020

Я изучал Python Pandas, поэтому написал небольшой код, чтобы поэкспериментировать с пользовательскими функциями, используемыми с agg, следующим образом.

import pandas as pd

def combine_cities(series):
       return reduce(lambda x, y: x + ', ' + y, series)

data = pd.DataFrame({'Country': ['Russia','USA','China','USA','China'],
                    'City':['Moscow','Boston','Wuhan','New York','Beijing']})
a = data.groupby('Country').agg(combine_cities)
print(a)

Однако я получаю следующую ошибку. Есть идеи, что я здесь делаю не так?

NameError                                 Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\groupby\ops.py in agg_series(self, obj, func)
    662         try:
--> 663             return self._aggregate_series_fast(obj, func)
    664         except Exception:

~\Anaconda3\lib\site-packages\pandas\core\groupby\ops.py in _aggregate_series_fast(self, obj, func)
    680         grouper = reduction.SeriesGrouper(obj, func, group_index, ngroups, dummy)
--> 681         result, counts = grouper.get_result()
    682         return result, counts

pandas\_libs\reduction.pyx in pandas._libs.reduction.SeriesGrouper.get_result()

pandas\_libs\reduction.pyx in pandas._libs.reduction.SeriesGrouper.get_result()

....

1 Ответ

0 голосов
/ 08 февраля 2020

Причиной возникновения ошибки было то, что Python3 удалил функцию уменьшения. Поэтому мне пришлось добавить следующее, чтобы оно работало.

from functools import reduce
...