#python #pandas #dataframe #pandas-groupby
Вопрос:
У меня есть уникальный идентификатор, который я хочу сгруппировать по [«EMID»] вместе со столбцом даты [«DateNew»]. Затем я хотел бы подсчитать, сколько раз каждое значение в BRalpha встречается для каждой группы.
Набор данных:
ЭМИД | Дата новая | БРальфа |
---|---|---|
SIM10001 | 2016-06-01 | ПОЯСНИЦА |
SIM10001 | 2016-06-01 | ПОЯСНИЦА |
SIM10001 | 2016-07-01 | ПОЯСНИЦА |
SIM10001 | 2016-07-01 | Тор |
SIM10002 | 2016-02-01 | NSPC |
SIM10002 | 2016-02-01 | NSPC |
SIM10002 | 2016-02-01 | NSPC |
SIM10002 | 2016-02-01 | NSPC |
SIM10002 | 2016-02-01 | NSPC |
SIM10003 | 2017-03-01 | ANFT |
SIM10003 | 2017-03-01 | ANFT |
Желаемый результат:
ЭМИД | Дата новая | Count_LUMB | Count_THOR | Count_NSPC | Count_ANFT |
---|---|---|---|---|---|
SIM10001 | 2016-06-01 | 2 | 0 | 0 | 0 |
SIM10001 | 2016-07-01 | 1 | 1 | 0 | 0 |
SIM10002 | 2016-02-01 | 0 | 0 | 5 | 0 |
SIM10003 | 2017-03-01 | 0 | 0 | 0 | 2 |
Ответ №1:
print(
df.groupby(["EMID", "DateNew", "BRalpha"])
.size()
.unstack()
.fillna(0)
.astype(int)
.add_prefix("count_")
.reset_index()
)
С принтами:
BRalpha EMID DateNew count_ANFT count_LUMB count_NSPC count_THOR
0 SIM10001 2016-06-01 0 2 0 0
1 SIM10001 2016-07-01 0 1 0 1
2 SIM10002 2016-02-01 0 0 5 0
3 SIM10003 2017-03-01 2 0 0 0