代码之家  ›  专栏  ›  技术社区  ›  blonc

python pandas日期时间循环(按天)

  •  -1
  • blonc  · 技术社区  · 8 年前

    我的PD的一个简单例子是:

    DateTime               C_CL       C_EB
    2018-01-03 10:30    -0.002726   -0.002921
    2018-01-03 10:50    -0.005832   -0.005343
    2018-01-03 11:10    -0.006966   -0.007278
    2018-01-03 11:30    -0.01883    -0.019026
    2018-01-04 10:30    -0.0021     -0.001261
    2018-01-04 10:50     0.006887    0.00595
    2018-01-04 11:10    -0.00076    -0.000717
    2018-01-04 11:30     0.002282    0.002152
    

    日期时间是 dtype='datetime64[ns]' 所以很容易做到 df['2018-01-04'] 它就会拉起来。

    问题是,我如何创建一个循环,允许我在一个时间段内迭代每一天,而不知道时间序列中的日期。我不担心时间,只是一天而已。这样做的原因是只为那天做一些计算,追加到表中并移到第二天。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Anton vBR    8 年前

    这有帮助吗?

    重新创建数据帧:

    import pandas as pd
    import numpy as np
    
    data = '''\
    DateTime               C_CL       C_EB
    2018-01-03T10:30    -0.002726   -0.002921
    2018-01-03T10:50    -0.005832   -0.005343
    2018-01-03T11:10    -0.006966   -0.007278
    2018-01-03T11:30    -0.01883    -0.019026
    2018-01-04T10:30    -0.0021     -0.001261
    2018-01-04T10:50     0.006887    0.00595
    2018-01-04T11:10    -0.00076    -0.000717
    2018-01-04T11:30     0.002282    0.002152'''
    
    file = pd.compat.StringIO(data)
    df = pd.read_csv(file, sep='\s+', parse_dates=['DateTime'], index_col=['DateTime'])
    

    下面是一些可以运行的操作:

    #df.groupby(df.index.date).sum()
    #df.groupby(df.index.date).mean()
    #df.groupby(df.index.date).std()
    #df['sum_CL'] = df.groupby(df.index.date)['C_CL'].transform('sum')
    #df.groupby(df.index.date)['C_CL'].agg(['sum','mean','std'])