我正在尝试使用Pandas在Python 3.6中生成一个巨大的数据集来测试代码,但我开发的方法太慢了,我想知道是否有更有效的方法。
我创建了一个较小的数据框,其中包含几列和大约3百万行(例如):
# assume we have relevant information in 'a','b','c'
data = pd.DataFrame(index=range(int(3e6)))
data['a'] = 0
data['b'] = 0
data['c'] = 0
现在,我想对这个数据帧的随机行进行构建,并使用它们构建一个大约有1500万行的大行,当然,即使行重复也是如此。
我尝试过采样并附加到新的数据框,如下所示:
data_tot = pd.DataFrame(columns=data.columns)
for i in range(int(15e6)):
samp = data.sample(1)
data_tot = data_tot.append(samp)
看起来效率很低但我从来没有必要生成这么多数据。我也试过预分配然后使用iloc,但仍然很慢。
答案 0 :(得分:2)
您可以使用np.random.choice
,生成随机索引,并索引df
。
idx = np.random.choice(len(df), int(15e6))
df = df.iloc[idx, :]