internal_id time_id membership
a 2017-01-01 10
a 2017-02-01 20
a 2017-03-01
a 2017-04-01
b 2017-01-01 10
b 2017-02-01 15
b 2017-03-01
b 2017-04-01
c 2017-01-01 10
c 2017-02-01 12
c 2017-03-01
c 2017-04-01
我想使用每个internal_id的最新差异来转发填充.因此,例如,对于internal_id =’a’,我想转发填充每次添加10.对于’b’,我想每次使用5转发填充.对于’c’,我想每次前进2.所以我的最终df看起来像:
internal_id time_id membership
a 2017-01-01 10
a 2017-02-01 20
a 2017-03-01 30
a 2017-04-01 40
b 2017-01-01 10
b 2017-02-01 15
b 2017-03-01 20
b 2017-04-01 25
c 2017-01-01 10
c 2017-02-01 12
c 2017-03-01 14
c 2017-04-01 16
我尝试了pd.ffill,但似乎只能使用常量值填充.有没有办法可以用常数总和来填充?
解决方法:
这是一种方法
In [38]: df.assign(membership=df.groupby('internal_id').membership
.transform(lambda x: x.ffill() + x.diff().shift().ffill().cumsum().fillna(0)))
Out[38]:
internal_id time_id membership
0 a 2017-01-01 10.0
1 a 2017-02-01 20.0
2 a 2017-03-01 30.0
3 a 2017-04-01 40.0
4 b 2017-01-01 10.0
5 b 2017-02-01 15.0
6 b 2017-03-01 20.0
7 b 2017-04-01 25.0
8 c 2017-01-01 10.0
9 c 2017-02-01 12.0
10 c 2017-03-01 14.0
11 c 2017-04-01 16.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。