高级阵列/数据帧切片(numpy/pandas)

2024-10-03 00:25:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从玉米价格列表(按日期索引)中随机生成50个连续30天的样本。你知道吗

到目前为止,我在一号线上有“随机选择50天”。对于第二行,我真正想要的是一个数据帧数组,每个数据帧包含自示例日期起的30天。目前它只返回当天的价格。你知道吗

samples=np.random.choice(corn[:'1981'].index,50)
corn['Open'][samples] #line I need to fix

最干净的方法是什么?你知道吗


Tags: 数据示例列表indexnp价格random数组
1条回答
网友
1楼 · 发布于 2024-10-03 00:25:58

你可以用

corn.loc[date:date+pd.Timedelta(days=29)]

从日期date开始选择30天的行。请注意,.loc[start:end]包括startend(与Python切片不同,Python切片使用半开区间)。因此,将29天添加到date会产生长度为30的数据帧。你知道吗

要获取数据帧列表,请使用列表:

dfs = [corn.loc[date:date+pd.Timedelta(days=29)] for date in samples]

import numpy as np
import pandas as pd

N = 365
corn = pd.DataFrame({'Open': np.random.random(N)}, 
                    index=pd.date_range('1980-1-1', periods=N))
samples = np.random.choice(corn[:'1981'].index,50)
dfs = [corn.loc[date:date+pd.Timedelta(days=29)] for date in samples]

相关问题 更多 >