Соедините строки в каждой группе и присвойте исходный DataFrame - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть датафрейм с двумя столбцами: user и lang.Каждый пользователь знает один или несколько языков:

     lang     user
0  Python     Mike
1   Scala     Mike
2       R     John
3   Julia  Michael
4    Java  Michael

Мне нужно получить для каждой строки на user все языки, которые он / она знает.Я могу сделать это:

df.groupby('user')['lang'].apply(lambda x:', '.join(x)).reset_index()

Но я получаю это:

      user           lang
0     John              R
1  Michael    Julia, Java
2     Mike  Python, Scala

Вместо того, что я хочу:

           lang     user
0  Python,Scala     Mike
1  Python,Scala     Mike
2             R     John
3    Julia,Java  Michael
4    Julia,Java  Michael

Код для воспроизведения:

import pandas as pd

df = pd.DataFrame({"lang":["Python","Scala","R","Julia","Java"],
                   "user":["Mike","Mike","John","Michael","Michael"]})
print(df)

1 Ответ

0 голосов
/ 12 декабря 2018

Используйте transform для "широковещания" результата groupby для каждой строки во входе.

df['lang'] = df.groupby('user')['lang'].transform(', '.join)
df
            lang     user
0  Python, Scala     Mike
1  Python, Scala     Mike
2              R     John
3    Julia, Java  Michael
4    Julia, Java  Michael
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...