pandas数据框中的随机行select

有没有办法从Pandas中的DataFrame中select随机行。

在R中,使用汽车包装,有一个有用的函数some(x, n) ,它类似于头部,但在这个例子中,从x中随机select10行。

我也看了切片文件,似乎没有什么等价物。

更新

现在使用版本20.有一个示例方法。

df.sample(n)

像这样的东西?

 import random def some(x, n): return x.ix[random.sample(x.index, n)] 

随着pandas版本0.16.x ,现在有一个内置的DataFrame.sample 方法 :

 import pandas df = pandas.DataFrame(data) # Randomly sample 70% of your dataframe df_0.7 = df.sample(frac=0.7) # Randomly sample 7 elements from your dataframe df_7 = df.sample(n=7) 

对于上述任一方法,您可以通过执行以下操作来获取其余行:

 df_rest = df.loc[~df.index.isin(df_0.7.index)] 

最好的办法是使用随机模块的样本函数,

 import numpy as np import pandas as pd from random import sample # given data frame df # create random index rindex = np.array(sample(xrange(len(df)), 10)) # get 10 random rows from df dfr = df.ix[rindex] 

其实这会给你重复的指数np.random.random_integers(0, len(df), N)其中N是一个很大的数字。

下面一行将从数据框df中的现有行数总数中随机selectn行而不进行replace。

df=df.take(np.random.permutation(len(df))[:n])