#python #pandas #dataframe #pandas-groupby
#python #панды #фрейм данных #pandas-groupby
Вопрос:
У меня есть простой dataframe
(df), как показано ниже:
index Job Person
1 j1 Cathy
2 j2 Mark
3 j3 Cathy
4 j4 Steve
5 j5 Cathy
Я хотел бы преобразовать приведенное выше dataframe
как:
Person CountJob JobDetails
Cathy 3 j1;j3;j5
Mark 1 j2
Steve 1 j4
Я могу частично решить эту проблему, используя groupby
:
final = df.groupby('Person').agg(
CountJob=pd.NamedAgg(column='Job',aggfunc="count"),
)
Я изо всех сил пытаюсь получить формат для последнего столбца « JobDetails
. Я предполагаю, что могу использовать эту lambda
функцию, но я просто не знаю как!
Ответ №1:
Попробуйте:
df.groupby('Person').agg(CountJob=('Job','count'),
JobDetails=('Job',';'.join)
)
Комментарии:
1. как обрабатывать «нулевые значения» в . присоединиться к разделу?
2. Сделайте удаление перед присоединением
3. Я продолжал получать ошибку при использовании ‘dropna ()’. Возможно, мой синтаксис был неправильным. В итоге я преобразовал весь df в str. df = df.astype(str), а затем запустил groupby.. какой синтаксис для dropna..
4. @CodeMaster попробуйте
('Job', lambda x: ';'.join(x.dropna())
. Илиdf.dropna('Job').groupby(...)