V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bleutail
V2EX  ›  Python

pandas 相关, k 线数据加工,用 resample 寻找价格最值相应时间遇到问题。

  •  
  •   bleutail · Jun 8, 2022 · 2132 views
    This topic created in 1425 days ago, the information mentioned may be changed or developed.
    def func1(x):
            try:
                    return x.index[x.argmax()]
            except:
                    return -999
    def func2(x):
            try:
                    return x.index[x.argmin()]
            except:
                    return -999
    df_origin['high_time'] = (df['last'].resample(label='right', closed='right',rule=period).agg(lambda x:func1(x))) 
    df_origin['low_time'] = (df['last'].resample(label='right', closed='right',rule=period).agg(lambda x:func2(x)))
    

    原表是一个时间顺序的价格序列 如果不写 try except 的话 x.index[x.argmax()]会因为 resample 遇到非交易时间段会自动切割出空值,argmax 在空值会报错。感觉方法不好,想请教下正确思路。。

    2 replies    2022-06-08 19:57:24 +08:00
    milkpuff
        1
    milkpuff  
       Jun 8, 2022
    用 groupby ,aggregate
    group = data.groupby(data.index.values.astype(f'datetime64[{period}]').astype('datetime64[ns]'))
    data = group.agg({
    'open': 'first',
    'high': 'max',
    'low': 'min',
    'close': 'last',
    'volume': 'sum'
    })
    bleutail
        2
    bleutail  
    OP
       Jun 8, 2022
    @milkpuff 谢谢回复,不过需要的是该时段中最高价格的时刻
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2363 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 10:33 · PVG 18:33 · LAX 03:33 · JFK 06:33
    ♥ Do have faith in what you're doing.