我有一个时间序列索引的 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”中创建的时间戳有小时(尽管格式不同),因此每次仅返回 00:00:00 小时值:
2004-04-07 00:00:00 4.0
mn[0] '4.0'
最佳答案
我认为你可以使用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]
关于python - pandas timeseries DF 切片和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40285676/