У меня есть следующие панды DataFrame 'df1':Python, Панды ошибка с GroupBy
id_client product
client1 product1
client1 product4
client1 product5
client2 product1
client2 product6
client3 product1
Прежде всего я хочу GroupBy id_client и получит соответствующие продукты внутри списка:
id_client product
client1 [product1,product4,product5]
client2 [product1,product6]
client3 [product1]
Тогда для каждый элемент каждого списка Я хочу добавить новую строку в новый DataFrame 'df2', подобный этому (nb_product - длина каждого списка):
product nb_product
product1 3
product4 3
product5 3
product1 2
product6 2
product1 1
Так первый я создал новый словарь:
nb_of_combination = {}
nb_of_combination['product'] = []
nb_of_combination['nb_product'] = []
я объявил следующую функцию:
def nb_of_combination(my_list):
nb_comb = len(my_list)
for row in my_list:
nb_of_combination['product'].append(row)
nb_of_combination['nb_product'].append(nb_comb)
я сгруппированный по «df1» по полю «id_client» и я применяю функция 'nb_of_combination':
df1 = df1.groupby('id_client',as_index=False).apply(lambda x: nb_of_combination(list(x.product)))
Но я получаю следующее сообщение об ошибке:
df1 = df1.groupby('id_client',as_index=False).apply(lambda x: nb_of_combination(list(x.product)))
File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 660, in apply
return self._python_apply_general(f)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 667, in _python_apply_general
not_indexed_same=mutated)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.py", line 2821, in _wrap_applied_output
v = next(v for v in values if v is not None)
Что я действительно не понимаю, так как:
df2 = pd.DataFrame(nb_of_combination)
кажется, работает хорошо.