具有较小的随机列的大型DataFrame(Pandas)

时间:2018-01-23 21:45:26

标签: python pandas dataframe bigdata

我正在尝试使用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,但仍然很慢。

1 个答案:

答案 0 :(得分:2)

您可以使用np.random.choice,生成随机索引,并索引df

idx = np.random.choice(len(df), int(15e6))
df = df.iloc[idx, :]
相关问题