【问题标题】:How to change week start date using df.resample?如何使用 df.resample 更改周开始日期?
【发布时间】:2017-11-23 22:04:26
【问题描述】:

我使用的是 Python 3.6,这是我的代码:

trainFile = r'C:\download\combine\Combine_1.csv'
pwd = os.getcwd()
os.chdir(os.path.dirname(trainFile))
df = pd.read_csv(os.path.basename(trainFile))
os.chdir(pwd)

df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
week = df.resample('w').mean()

week.to_csv('week_combine.csv')

我尝试将每日数据变成每周数据,但是现在每周从每周日开始,如何将其更改为每周一?

例如,现在的结果如下:

...
2017-09-10
2017-09-17
2017-09-24
...

但我想改成:

...
2017-09-11
2017-09-18
2017-09-25
...

有什么想法吗?

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    需要W-MONanchored offset:

    rng = pd.date_range('2017-09-09', periods=15)
    df = pd.DataFrame({'a': range(15)}, index=rng)  
    
    
    week = df.resample('W-MON').mean()
    print (week)
                 a
    2017-09-11   1
    2017-09-18   6
    2017-09-25  12
    

    【讨论】:

    • 完美!谢谢。
    • 默认情况下,一周从星期日开始。从今天开始,有什么办法可以每周分组吗?
    • @EMT - 你觉得Thursday 吗?
    • 不是具体的星期四,我想按每周分组,这样每当程序运行时,它运行的那一天就是默认的开始日期。
    • @EMT 检查start = '2017-09-09' rng = pd.date_range('2017-09-09', periods=15) df = pd.DataFrame({'a': range(15)}, index=rng) a = (df.index - pd.to_datetime(start)).days // 7 df = df.reset_index().groupby(a).agg(day=('index', 'first'), new = ('a', 'mean'))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多