我想在某个小时开始每天(恰好24小时)频繁重新采样TimeSeries.
喜欢:
index = date_range(datetime(2012,1,1,17), freq='H', periods=60)
ts = Series(data=[1]*60, index=index)
ts.resample(rule='D', how='sum', closed='left', label='left')
Run Code Online (Sandbox Code Playgroud)
结果我得到:
2012-01-01 7
2012-01-02 24
2012-01-03 24
2012-01-04 5
Freq: D
Run Code Online (Sandbox Code Playgroud)
结果我希望:
2012-01-01 17:00:00 24
2012-01-02 17:00:00 24
2012-01-03 17:00:00 12
Freq: D
Run Code Online (Sandbox Code Playgroud)
几个星期前,你可以传递'24H'到freq参数,它的工作完全罚款.但现在它结合起来'24H'了'1D'.
我使用的'24H'是现在修复的错误吗?我怎样才能以高效和pythonic(或熊猫)的方式获得希望的结果呢?
版本:
我是正则表达式的新手,并且有关于re.split功能的问题.
在我的情况下,分裂必须关注"特殊逃脱".
文本应该分开;,除了有一个领导?.
编辑:在这种情况下,不应拆分两个部分?,必须删除.
这是一个例子和我希望的结果:
import re
txt = 'abc;vwx?;yz;123'
re.split(r'magical pattern', txt)
['abc', 'vwx;yz', '123']
Run Code Online (Sandbox Code Playgroud)
我到目前为止试过这些尝试:
re.split(r'(?<!\?);', txt)
Run Code Online (Sandbox Code Playgroud)
得到了:
['abc', 'vwx?;yz', '123']
Run Code Online (Sandbox Code Playgroud)
遗憾地导致没有消耗的?麻烦,以下列表理解是性能关键:
[part.replace('?;', ';') for part in re.split(r'(?<!\?);', txt)]
['abc', 'vwx;yz', '123']
Run Code Online (Sandbox Code Playgroud)
是否有一种"快速"的方式来重现这种行为?
re.findall函数可以成为解决方案吗?
例如,此代码的扩展版本:
re.findall(r'[^;]+', txt)
Run Code Online (Sandbox Code Playgroud)
我使用的是python 2.7.3.
感谢你在期待!