我正在处理股价数据,希望resample()
每第二行返回一次,而不是每两个工作日返回一次(resample('2B')
)。障碍是任何在工作日落地的假日。见下文,MLK日为2018年1月15日星期一:
import pandas as pd
data = '''\
date,price
2018-01-08,88.28
2018-01-09,88.22
2018-01-10,87.82
2018-01-11,88.08
2018-01-12,89.6
2018-01-16,88.35
2018-01-17,90.14
2018-01-18,90.1
2018-01-19,90.0
2018-01-22,91.61
2018-01-23,91.9
2018-01-24,91.82
2018-01-25,92.33
2018-01-26,94.06'''
fileobj = pd.compat.StringIO(data)
df = pd.read_csv(fileobj, parse_dates=['date'], index_col=[0])
df_resample = df.resample('2B').min()
print(df_resample)
输出:
^{pr2}$我希望重采样从1/12跳到1/17。我知道我可以使用df['price'].loc[::2]
来传递df.resample('2B').last()
,但我还需要使用min()
、max()
和{
谢谢。在
预期产量:
为了得到一个稳定的解决方案,我会以某种方式重新定义B-days。在
但如果重置索引,则可以使用索引号和groupby:
退货:
^{pr2}$或者您可以这样做:
退货:
使用np.重复使用数组切片,可以创建一个重采样的数据帧,其中日期(索引)重复两次。在
然后像往常一样分组得到所需的输出:
^{pr2}$我认为这也可能起作用,有点颠倒了。。。在
相关问题 更多 >
编程相关推荐