我们有一些特定时期的现成销售数据,例如1周、1个月……1年:
time_pillars = pd.Series(['1W', '1M', '3M', '1Y'])
sales = pd.Series([4.75, 5.00, 5.10, 5.75])
data = {'time_pillar': time_pillars, 'sales': sales}
df = pd.DataFrame(data)
我想做两个手术。 首先,创建一个日期类型为df['date']的新列,它对应于从现在开始的1周,1个月…1年的实际日期。在
然后,我想创建另一列df['days_from_now'],用这些支柱上的天数(1周为7天,1个月为30天左右,1年约为365天)。在
这样做的目的是使用任意一天作为一个简单的线性插值方法()的输入,以获得任何给定日期的销售数据(例如,2018年10月4日的销售额是多少?--->;我们将在3个月到1年之间进行插值)。 非常感谢。在
我不太清楚您的插值是什么意思,但是这里有一种方法可以使您的数据帧在
pandas
(从您在帖子中提供的原始df
开始):我把它包装在一个函数中,这样你就可以在任何给定的一天调用它,从那天起得到1周、3周等的结果。在
注意:如果您希望您的}
days_from_now
只是天数的整数,请在函数中使用df['days_from_now'] = [i.days for i in df['date'] - datetime.now().date()]
,而不是{说明:
^{pr2}$获取重复4次的今天日期列表(
datetime.now()
),并分别添加1周、1个月、3个月和1年的relativedelta
(时差),提取日期(i.date() for ...
),最后使用得到的列表创建一个新列。在简单得多,它只是从今天的日期中减去上面的新日期。结果是一个timedelta对象,
pandas
可以方便地格式化为“n days
”。在相关问题 更多 >
编程相关推荐