小编MaM*_*MaM的帖子

每小时重新采样一次具有一定开始时间的TimeSeries

我想在某个小时开始每天(恰好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(或熊猫)的方式获得希望的结果呢?

版本:

  • python 2.7.3
  • pandas 0.9.0rc1(但在0.8.1中也不起作用)
  • numpy 1.6.1

python pandas

17
推荐指数
2
解决办法
1万
查看次数

re.split()有特殊情况

我是正则表达式的新手,并且有关于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.

感谢你在期待!

python regex

4
推荐指数
1
解决办法
293
查看次数

标签 统计

python ×2

pandas ×1

regex ×1