Python 基于标准的样本
我希望使用pandas函数,但不使用分组或筛选数据的条件Python 基于标准的样本,python,pandas,Python,Pandas,我希望使用pandas函数,但不使用分组或筛选数据的条件 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行进行采样,您可以使用=操作符创建布尔值列表*。当
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行进行采样,您可以使用=
操作符创建布尔值列表*。当所述列表被放入getter([]
)时,它将过滤这些值。如果需要,可以使用n=50
创建50行的样本大小
新代码
完整代码
*在本文中,列表并不是一个字面意义上的列表,但它是一个解释其工作原理的好词。从技术上讲,它是一个将行映射为真/假值的数据帧
更模糊的数据帧采样
如果要对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]))
当然但是如果您需要从
df['a']==1
和df['a']==0
中各抽取50个样本,而不使用一些奇怪的if语句和拆分数据,该怎么办etc@destinychoice更新了我的答案。我明白了。但后一种方法最终会有两个数据帧,每个数据帧都是50,其中一个df应该包含100个值?@destinychoice更新。如果我真的帮了忙,如果你能标记为“解决方案/投票表决”,那会很有帮助。@Neil我怎么才能添加多个条件?例如,如果我想根据列a=1、b=5、Z=“Michael”…等进行采样
print(df[(df['a']==1) | (df['a']==0)].sample(n=50))
df1 = df[df['a']==1].sample(n=50)
df0 = df[df['a']==0].sample(n=50)
print(pd.concat([df1,df0]))