pandas timeseries DF切片和选择

时间:2016-10-27 13:19:05

标签: python list datetime pandas resampling

我有一个时间序列索引的df,频率为15分钟,持续10年:

                        dat
2004-04-07 00:00:00     4.0
2004-04-07 00:15:00     1.0
2004-04-07 00:30:00     2.0

我需要能够提取min&每天最大'dat'值(0-24小时)并将它们附加到单独的列表中。

我的计划是使用日期时间索引并循环使用:

days = pd.to_datetime(pd.date_range(start = s, end = e, freq='1d'), format='%Y%m%d')

for day in days:
    mn.append(min(df.loc[day].dat))

但是,“天”中创建的时间戳有几个小时(尽管格式化),所以每次只返回00:00:00小时值:

2004-04-07 00:00:00     4.0
mn[0] '4.0'

2 个答案:

答案 0 :(得分:2)

我认为您可以resample使用Resampler.aggregate

df = df.resample('D').agg({'dat': ['min','max']})
print (df)
            dat     
            min  max
2004-04-07  1.0  4.0

此外:

df = df.resample('D')['dat'].agg({'min_dat': 'min', 'max_dat': 'max'})
print (df)
            max_dat  min_dat
2004-04-07      4.0      1.0

如果需要创建列表,请使用tolist

Lmin = df.min_dat.tolist()
print (Lmin)
[1.0]

Lmax = df.max_dat.tolist()
print (Lmax)
[4.0]

答案 1 :(得分:0)

conversion = {'Low': 'min', 'High': 'max'}
minmax= days.resample(rule='1D').apply(conversion)