【问题标题】:Strange behavior from pandas .agg in a time-series时间序列中 pandas .agg 的奇怪行为
【发布时间】: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))})

只是这个实验返回零作为长度。这不是常规数据帧的情况。

【问题讨论】:

    标签: pandas time-series pandas-groupby


    【解决方案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 也为我修复了它。
    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2016-10-05
    • 1970-01-01
    • 2020-01-30
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多