我有一个包含以下列的数据框:ID、event_name、event_date
目标:对于每个唯一的 ID,如果他们有一个,event_name == 'attended book event'
那么我想创建一个新列attended_book_event
并拥有value = 1
. 如果它们没有,event_name==' attended book event'
则新列中的值为0
。
样本:
ID| event_name | event_date
1| joined_club| 12-12-03
1| attended_book_event| 12-27-03
1| elite_member| 03-01-05
2| joined_club| 12-12-03
2| elite_member| 03-01-05
我尝试对 id 进行分组,然后使用条件创建一个新列,但结果不是我想要的。
df_dose['had_dose_increase'] = [1 if df_dose['event_name'] ==
'dose_increased' else 0]
我想要一个新专栏
ID| event_name | event_date| attended_book_event
1| joined_club| 12-12-03| 1
1| attended_book_event| 12-27-03|1
1| elite_member| 03-01-05|1
2| joined_club| 12-12-03|0
2| elite_member| 03-01-05|0
使用pd.Series.groupby
具有transform
:
df['attended_book_event'] = df.groupby('ID')['event_name'].transform(lambda x: 'attended_book_event' in set(x)).astype(int)
输出:
ID event_name event_date attended_book_event
0 1 joined_club 12-12-03 1
1 1 attended_book_event 12-27-03 1
2 1 elite_member 03-01-05 1
3 2 joined_club 12-12-03 0
4 2 elite_member 03-01-05 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句