我有一个数据框,我需要按2列分组,并根据条件创建一个新列。我的数据如下所示:
| 识别号|星期|天数|
| - ------|- ------|- ------|
| 1个|1个|第二章|
| 1个|1个|三个|
| 1个|第二章|四个|
| 1个|第二章|1个|
| 第二章|1个|1个|
| 第二章|第二章|第二章|
| 三个|1个|四个|
我需要按ID & week列分组,这样每周的每个ID都有一行。groupby基于条件-如果某周的ID在day_num列中的值为1,则groupby下的值为1,否则为0。例如,ID 1在两行下都有2 & 3,因此在groupby下等于0,对于ID 1的第2周,它有一行值为1。因此为1。
我需要的输出如下所示:
| 识别号|星期|第1天|
| - ------|- ------|- ------|
| 1个|1个|无|
| 1个|第二章|1个|
| 第二章|1个|1个|
| 第二章|第二章|无|
| 三个|1个|无|
我搜索并找到了这段代码,但它使用了count,我只需要在这里写入值1或0。
df1=df1.groupby('ID','week')['day_num'].apply(lambda x: (x=='1').count())
有什么办法吗?
谢谢!
2条答案
按热度按时间efzxgjgh1#
你也可以从另一个Angular 着手:检查“day_num”中的1是否相等,并按ID & week对 that 分组。然后用
any
进行聚合,查看分组中是否有1。最后将True/False转换为1/0,并将分组移到列中。krcsximq2#
结果