我有一个案例,我想添加一个新列,该列依赖于我通过基于当前行过滤DataFrame获得的值。例如:
date happy user
0 2017-05-01 True user1
1 2017-05-02 True user1
2 2017-05-03 False user1
3 2017-05-04 True user1
4 2017-05-01 False user2
5 2017-05-02 True user2
我想添加一个列previous_days_happy,该列可以为每个用户提供他们满意的当天之前的天数。所以这里的输出是:
date happy user prev_happy_days
0 2017-05-01 True user1 0
1 2017-05-02 True user1 1
2 2017-05-03 False user1 2
3 2017-05-04 True user1 2
4 2017-05-01 False user2 0
5 2017-05-02 True user2 0
我的研究只找到了根据当前行中的值添加列的示例。但是在这里我想获取当前行的值并使用它们来过滤DataFrame并计算一个值。
常规过滤,如:
df[df['userid'] < 1000]
没有帮助,因为要过滤的值不是常量,而是依赖于行。
我也试过了groupby的变种,变换无济于事,我认为这是因为变换只接受一个系列,而不是一个DataFrame。
答案 0 :(得分:0)
假设每个组中的数据按日期排序:
df['prev_happy_days'] = df.groupby('user')['happy'].cumsum().astype(int)
将返回:
date happy user prev_happy_days
0 2017-05-01 True user1 1
1 2017-05-02 True user1 2
2 2017-05-03 False user1 2
3 2017-05-04 True user1 3
4 2017-05-01 False user2 0
5 2017-05-02 True user2 1