时间序列中 pandas .agg 的奇怪行为
Posted
技术标签:
【中文标题】时间序列中 pandas .agg 的奇怪行为【英文标题】:Strange behavior from pandas .agg in a time-series 【发布时间】:2022-01-13 05:50:36 【问题描述】:我正在使用来自 yfinance 的财务数据。
import yfinance as yf
df = yf.download("AAPL", interval="5m", period="60D")
数据框如下所示:
Open High
Datetime
2021-09-14 09:30:00-04:00 150.929993 151.054993
2021-09-14 09:35:00-04:00 150.279999 150.820007
2021-09-14 09:40:00-04:00 150.360001 150.619995
2021-09-14 09:45:00-04:00 150.327698 150.619995
2021-09-14 09:50:00-04:00 150.100006 150.190002
2021-12-07 15:35:00-05:00 170.274994 170.279999
2021-12-07 15:40:00-05:00 170.038101 170.250000
2021-12-07 15:45:00-05:00 170.229996 170.300003
2021-12-07 15:50:00-05:00 170.279999 170.750000
2021-12-07 15:55:00-05:00 170.699997 171.270004
我想在聚合中运行自定义 lambda 函数以及其他函数。
df.groupby(df.index.normalize()).agg("High": (lambda x: len(x)))
只是这个实验返回零作为长度。这不是常规数据帧的情况。
【问题讨论】:
【参考方案1】:经过测试,对我来说工作正常:
import yfinance as yf
df = yf.download("AAPL", interval="5m", period="60D").iloc[[11,2000,2001,2002,203,204,205, 206]]
print (df)
df = df.groupby(df.index.normalize()).agg("High": (lambda x: len(x)))
print (df)
High
Datetime
2021-09-14 00:00:00-04:00 1.0
2021-09-16 00:00:00-04:00 4.0
2021-10-19 00:00:00-04:00 3.0
【讨论】:
从 1.3.1 更新到 1.3.4 也为我修复了它。以上是关于时间序列中 pandas .agg 的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章
pandas.DataFrame.agg 不适用于 np.std?
pandas groupby 多列给出了奇怪的索引行为[重复]