基于标准的大熊猫样本

时间:2017-11-22 10:24:54

标签: python pandas

我想使用pandas sample函数但是没有分组或过滤数据的标准。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(low=0, high=5, size=(10000, 2)),columns=['a', 'b'])

print df.sample(n=100)

这将抽样100行,但如果我想在df['a']中抽样包含0到50行,其中包含1行的50行。

1 个答案:

答案 0 :(得分:4)

您可以使用==运算符创建布尔值列表*。当所述列表放入getter([])时,它将过滤值。如果您愿意,可以使用n=50创建50行的样本大小。

新代码

df[df['a']==1].sample(n=50)

完整代码

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(low=0, high=5, size=(10000, 2)),columns=['a', 'b'])

print(df[df['a']==1].sample(n=50))

*列表在这个上下文中并不是一个列表,但它是一个很好的词,用于解释它是如何工作的。它在技术上是一个将行映射到真/假值的DataFrame。

更加模糊的DataFrame采样

如果要对a为1或0的所有50个进行采样:

print(df[(df['a']==1) | (df['a']==0)].sample(n=50))

如果你想抽样50个:

df1 = df[df['a']==1].sample(n=50)
df0 = df[df['a']==0].sample(n=50)
print(pd.concat([df1,df0]))