我知道在此网站上也曾提出过类似的问题,但是我看到的其他解决方案并不能真正解决我的问题。
我有此数据:
sample = pd.DataFrame({'CustomerID': ['1', '2', '3', '4', '5', '6'],
'Date': np.random.choice(pd.Series(pd.date_range('2018-01-01',
freq='D', periods=180)), 6),
'Credits': np.random.uniform(0,1000,6),
'Credit Days': np.random.uniform(0, 1000, 6),
}, columns=['Date', 'CustomerID', 'Credits', 'Credit Days'])
sample
对于每个公司,我基本上要添加'Date' + 'Credit Days'
,然后从该结果日期起再添加'Credit Days'
,直到结束日期超过2020-01-01。我还想按新数据框中的CustomerID将每个日期分组。
谢谢。
答案 0 :(得分:0)
您想进行除法,但您正在考虑重复加法。
doomsday = pd.to_datetime('2020-01-01')
time_left = doomsday - sample.Date
ratio = time_left.dt.days / sample['Credit Days']
那给你:
0 0.628771
1 4.563582
2 5.528058
3 0.942857
4 1.071486
5 20.097542
您可以根据需要向上或向下取整,并根据需要将其相乘:
sample.Date + pd.to_timedelta(sample['Credit Days'], 'd') * ratio.round()
哪个给你:
0 2020-12-22 00:20:19.857580800
1 2020-03-09 11:19:03.895536000
2 2020-02-23 10:37:54.541632000
3 2020-02-06 01:26:56.634835200
4 2019-11-18 21:37:24.674937600
5 2019-12-28 13:03:52.781760000
对于groupby,这是一个单独的问题,我相信您可以通过检查已经专门询问过的其他问题来解决。