Python 从数据帧中随机选择小时
我很难从数据帧中随机选择行。通常,使用Python 从数据帧中随机选择小时,python,pandas,dataframe,datetime,random,Python,Pandas,Dataframe,Datetime,Random,我很难从数据帧中随机选择行。通常,使用np.random.choice(数据,大小=1000)选择一行不是问题。我假设替换=正确。但是,我需要随机选择一个小时,作为输出,接收每个季度的4行 要从中选择的数据帧如下(1132行): 我想要的输出是这样的: 假设随机发生器已“选择”2018-07-11 05:00:00,则输出为 2018-07-11 05:00:00 43.80 43.49 43.49 2018-07-11 05:15:00 43.80 50.71 50.7
np.random.choice(数据,大小=1000)
选择一行不是问题。我假设替换=正确。但是,我需要随机选择一个小时,作为输出,接收每个季度的4行
要从中选择的数据帧如下(1132行):
我想要的输出是这样的:
假设随机发生器已“选择”2018-07-11 05:00:00
,则输出为
2018-07-11 05:00:00 43.80 43.49 43.49
2018-07-11 05:15:00 43.80 50.71 50.71
2018-07-11 05:30:00 43.80 48.19 48.19
2018-07-11 05:45:00 43.80 40.02 40.02
根据随机样本的数量(N),生成的数据帧的长度应为4xN
是否可以直接从数据帧中随机选择一个dayhour并重复1000次?我担心使用一个额外的数据框来选择一个小时,然后在原始数据框中查找相应的值会太耗时。
我相信这在Python中是可行的,但我找不到任何关于这方面的提示
谢谢你的帮助 我认为您可以将删除分和秒的值与进行比较:
N = 1000
vals = pd.to_datetime(np.random.choice(df.index,size=N)).floor('H')
hours = df.index.floor('H')
for i in vals:
print (df[hours == i])
编辑:对于联接所有小数据帧,请使用:
或者使用np创建数组。连接DatetimeIndex
的,并通过loc
选择:
idx = np.concatenate([df.index[hours == i] for i in vals])
df1 = df.loc[idx]
我认为您可以将值与删除分钟和秒进行比较:
N = 1000
vals = pd.to_datetime(np.random.choice(df.index,size=N)).floor('H')
hours = df.index.floor('H')
for i in vals:
print (df[hours == i])
编辑:对于联接所有小数据帧,请使用:
或者使用np创建数组。连接DatetimeIndex
的,并通过loc
选择:
idx = np.concatenate([df.index[hours == i] for i in vals])
df1 = df.loc[idx]
采样一次以获取随机索引,然后查找与该日期和时间的所有匹配项:
random_idx = df.sample().index
df[(df.index.date == random_idx.date) & (list(df.index.hour) == random_idx.hour)]
然后做1000次:
for i in range(1000):
random_idx = df.sample().index
print(df[(df.index.date == random_idx.date) & (list(df.index.hour) == random_idx.hour)])
采样一次以获取随机索引,然后查找与该日期和时间的所有匹配项:
random_idx = df.sample().index
df[(df.index.date == random_idx.date) & (list(df.index.hour) == random_idx.hour)]
然后做1000次:
for i in range(1000):
random_idx = df.sample().index
print(df[(df.index.date == random_idx.date) & (list(df.index.hour) == random_idx.hour)])
是的,我认为这是正确的方向。我注意到,我有点不清楚,因为在N=1000-4000行的情况下,最终的数据帧应该包含。您的建议创建了长度为4的N个数据帧。我必须如何调整代码?是的,我认为这是正确的方向。我注意到,我有点不清楚,因为在N=1000-4000行的情况下,最终的数据帧应该包含。您的建议创建了长度为4的N个数据帧。我将如何调整代码?