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