Pandas - Использование groupby для объединения столбцов со строками - проблема с сообщением TypeError - PullRequest
3 голосов
/ 04 марта 2020

У меня довольно простой случай, который по какой-то причине вызывает у меня проблемы.

Я объединяю несколько фреймов данных. В результате у меня часто будет один и тот же ключ, но разные комментарии для каждого значения ключа.

KeyValue       Comment
1235           This is okay
444            Problems here
1235           Investigate further

Я пытаюсь дедуплицировать ключи, но сохраняю все комментарии, объединяя их в одно поле Комментарии. Я хотел бы получить вывод:

KeyValue       Comment
1235           This is okay | Investigate further
444            Problems here

Я пробовал:

newdf = olddf.groupby('KeyValue')['Comment'].apply(lambda x: ' | '.join(x)).reset_index()

Но когда я это делаю, я получаю

"TypeError: sequence item 0: expected str instance, float found" 

Я видел похожие на мои вопросы здесь (вот где я получил оригинальный код), но не уверен, почему я получаю эту ошибку или как ее устранить. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 04 марта 2020

Я преобразовал ваше значение ключа в строку, и она работает:

import pandas as pd

mydata = pd.DataFrame([['KeyValue','Comment'],
[1235,'This is okay'],
[444,'Problems here'],
[1235,'Investigate further']])

mydata.columns = mydata.iloc[0]
mydata = mydata[1:]
print(mydata)

newdf = mydata.groupby(str('KeyValue'))['Comment'].apply(lambda x: ' | '.join(x)).reset_index()
print(newdf)  
0 KeyValue              Comment
1     1235         This is okay
2      444        Problems here
3     1235  Investigate further
   KeyValue                             Comment
0       444                       Problems here
1      1235  This is okay | Investigate further
...