我正在尝试将每周数据上采样到每日数据,但是,在对最后一个边缘进行上采样时遇到困难。我该怎么办?
import pandas as pd
import datetime
df = pd.DataFrame({
'wk start': ['2018-08-12', '2018-08-12', '2018-08-19'],
'car': ['tesla model 3', 'tesla model x', 'tesla model 3'],
'sales': [38000, 98000, 40000]})
df['wk start'] = df['wk start'].apply(
lambda x: datetime.datetime.strptime(x, '%Y-%m-%d'))
df.set_index('wk start').groupby('car').resample('D').pad()
这将返回:
car sales
car wk start
tesla model 3 2018-08-12 tesla model 3 38000
2018-08-13 tesla model 3 38000
2018-08-14 tesla model 3 38000
2018-08-15 tesla model 3 38000
2018-08-16 tesla model 3 38000
2018-08-17 tesla model 3 38000
2018-08-18 tesla model 3 38000
2018-08-19 tesla model 3 40000
tesla model x 2018-08-12 tesla model x 98000
我想要的输出是:
car sales
car wk start
tesla model 3 2018-08-12 tesla model 3 38000
2018-08-13 tesla model 3 38000
2018-08-14 tesla model 3 38000
2018-08-15 tesla model 3 38000
2018-08-16 tesla model 3 38000
2018-08-17 tesla model 3 38000
2018-08-18 tesla model 3 38000
2018-08-19 tesla model 3 40000
2018-08-20 tesla model 3 40000
2018-08-21 tesla model 3 40000
2018-08-22 tesla model 3 40000
2018-08-23 tesla model 3 40000
2018-08-24 tesla model 3 40000
2018-08-25 tesla model 3 40000
tesla model x 2018-08-12 tesla model x 98000
2018-08-13 tesla model x 98000
2018-08-14 tesla model x 98000
2018-08-15 tesla model x 98000
2018-08-16 tesla model x 98000
2018-08-17 tesla model x 98000
2018-08-18 tesla model x 98000
我看了this,但他们使用的是句点,我看的是日期时间。
3条答案
按热度按时间mwg9r5ms1#
是的,你是对的,最后一个边缘数据被排除在外。解决方案是将它们添加到输入
DataFrame
-我的解决方案使用drop_duplicates
创建一个助手Dataframe
,在使用您的解决方案之前将6
天和concat
添加到原始df
:wtlkbnrh2#
在使用之前的
groupby
尝试之前,为每周和stack
的末尾分配一列:输出:
pbwdgjma3#
您还可以执行以下操作: