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])