pandas 时间序列 DF 切片和选择

pandas timeseries DF slice and selection

我有一个时间序列索引的 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

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

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

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))

但是在 'days' 中创建的时间戳有小时(尽管格式)所以它 returns 00:00:00 每次只有小时值:

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

我想你可以使用 resample with 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]
conversion = {'Low': 'min', 'High': 'max'}
minmax= days.resample(rule='1D').apply(conversion)