我有一个带有约50,000行的Pandas数据框,我想根据多种条件从该数据框中随机选择一部分行。具体来说,我有一列称为“使用类型”,对于该列中的每个字段,我想选择不同比例的行。
例如:
df[df['type of use'] == 'housing'].sample(frac=0.2)
此代码返回所有以“房屋”作为“使用类型”的行的20%。问题是我不知道如何以“惯用”方式对其余字段执行此操作。我也不知道如何从这次采样中得到结果来形成一个新的数据框。
答案 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'])