Объедините несколько строк (имеющих несколько нестроковых значений) с одним и тем же идентификатором в одну строку с разделителями в пандах - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть такой набор данных:

ID    Name
 1       a
 1       b
 1       2
 1       3
 2      er
 2     get
 2  better
 3     123
 3    cold
 3    warm
 3   sweet
 3    heat

, и я хочу сгруппировать эти данные таким образом, чтобы столбец данных «имя» с одинаковым «идентификатором» был объединен с помощью разделителя.Примерно так:

ID                      Name
 1                   a,b,2,3
 2             er,get,better
 3  123,cold,warm,sweet,heat

и т. Д.

Кто-нибудь может дать мне питонский способ сделать это?

1 Ответ

0 голосов
/ 21 сентября 2018

Используйте ','.join в groupby

df.groupby('ID').Name.apply(','.join)

ID
1                     a,b,c,d
2               er,get,better
3    hot,cold,warm,sweet,heat
Name: Name, dtype: object

Сбросьте индекс, если вам нужны те же два столбца

df.groupby('ID').Name.apply(','.join).reset_index()

   ID                      Name
0   1                   a,b,c,d
1   2             er,get,better
2   3  hot,cold,warm,sweet,heat

Если по какой-то причине у вас нетстроковые элементы

df.assign(Name=df.Name.astype(str)).groupby('ID').Name.apply(','.join).reset_index()

   ID                      Name
0   1                   a,b,c,d
1   2             er,get,better
2   3  hot,cold,warm,sweet,heat
...