Python 基于日期值向月份列添加值
我有一个用户观察数据框 每个观察都有一个id、userID、注册月份和取消月份。 每个用户标识可以有多个条目(顺序) 我想为每个月创建一列,设置为1或0,具体取决于用户是否处于活动状态。我想在2017-01年到2018-12年间开设专栏 示例:userID 3已于2018-03年注册,并于2018-05年取消。对于该观察,2018-03、2018-04和2018-05列的值应为1,所有其他列的值应为0 不知道如何在python中以最有效的方式完成 预期产量Python 基于日期值向月份列添加值,python,pandas,Python,Pandas,我有一个用户观察数据框 每个观察都有一个id、userID、注册月份和取消月份。 每个用户标识可以有多个条目(顺序) 我想为每个月创建一列,设置为1或0,具体取决于用户是否处于活动状态。我想在2017-01年到2018-12年间开设专栏 示例:userID 3已于2018-03年注册,并于2018-05年取消。对于该观察,2018-03、2018-04和2018-05列的值应为1,所有其他列的值应为0 不知道如何在python中以最有效的方式完成 预期产量 id用户id注册月取消月任期2017-
id用户id注册月取消月任期2017-01 2017-02。。。2018-03 2018-04 2018-05 2018-06 ... 2018-12
23 23434 2018-03 2018-05 3 0 0 ... 1 1 1 0 0 ... 0
24 23435 2017-01 2018-03 14 1 1 ... 1 0 0 0 0 ... 0```
在列表理解中使用匹配值的词典列表,创建数据框,将缺少的值替换为0
和原始值:
L = [dict.fromkeys(pd.period_range(s, e), 1)
for s, e in zip(df['signupmonth'], df['cancelmonth'])]
rng = pd.period_range('2017-01', '2018-12', freq='m')
df1 = pd.DataFrame(L, index=df.index, columns=rng).fillna(0).astype(int)
print (df1)
2017-01 2017-02 2017-03 2017-04 2017-05 2017-06 2017-07 2017-08 \
0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1
2017-09 2017-10 ... 2018-03 2018-04 2018-05 2018-06 2018-07 \
0 0 0 ... 1 1 1 0 0
1 1 1 ... 1 0 0 0 0
2018-08 2018-09 2018-10 2018-11 2018-12
0 0 0 0 0 0
1 0 0 0 0 0
[2 rows x 24 columns]
df = df.join(df1)
#print (df)
您能否添加一些示例数据、预期输出,例如2个用户?@jezrael给您!