根据列值获取数据框的比例

时间:2019-01-10 12:38:01

标签: python pandas numpy

我有一个带有约50,000行的Pandas数据框,我想根据多种条件从该数据框中随机选择一部分行。具体来说,我有一列称为“使用类型”,对于该列中的每个字段,我想选择不同比例的行。

例如:

df[df['type of use'] == 'housing'].sample(frac=0.2)

此代码返回所有以“房屋”作为“使用类型”的行的20%。问题是我不知道如何以“惯用”方式对其余字段执行此操作。我也不知道如何从这次采样中得到结果来形成一个新的数据框。

1 个答案:

答案 0 :(得分:1)

您可以使用list(df['type of use'].unique())为该列中的所有值创建一个唯一列表,并按如下所示进行迭代:

for i in list(df['type of use'].unique()):
    print(df[df['type of use'] == i].sample(frac=0.2))

i = 0 
while i < len(list(df['type of use'].unique())):
    df1 = df[(df['type of use']==list(df['type of use'].unique())[i])].sample(frac=0.2)
    print(df1.head())
    i = i + 1

要存储,您可以创建字典:

dfs = ['df' + str(x) for x in list(df2['type of use'].unique())]
dicdf = dict()
i = 0 
while i < len(dfs):
    dicdf[dfs[i]] = df[(df['type of use']==list(df2['type of use'].unique())[i])].sample(frac=0.2)
    i = i + 1
print(dicdf)

这将打印数据帧的字典。 您可以打印您想要看到的内容,例如住房样本:print (dicdf['dfhousing'])