У меня есть следующие панды dataframe имени matches
:Панды: преобразование строк в один столбец на основе состояния
id | name | age
1 | a | 19
1 | b | 25
2 | c | 19
2 | d | 22
Я использую groupby
+ count()
, если значение определенного столбца (age
) удовлетворяет условию (x < 21
). Результат записывается в новый столбец (new_col
):
matches['new_col'] = matches.groupby(['id'])['age'].transform(lambda x: x[x < 21].count())
dataframe тогда выглядит следующим образом:
id | name | age | new_col
1 | a | 19 | 1
1 | b | 25 | 1
2 | c | 19 | 2
2 | d | 18 | 2
Теперь я хотел бы выводить результат в более понятным способом, то есть, name
-колонка каждой строки, где выполняется условие (возраст < 21), должно быть записано в новый столбец, например result
.
Я бы ожидать что-то вроде этого (однако, могут быть и другие способы для достижения этой цели, возможно, даже сделать Тхи уже на первом этапе, где я добавить new_col
.):
id | name | age | new_col | result
1 | a | 19 | 1 | a
1 | b | 25 | 1 | a
2 | c | 19 | 2 | c,d
2 | d | 18 | 2 | c,d
Последний шаг (добавление колонка result
), где я застрял прямо сейчас.