У меня есть фрейм данных, содержащий информацию о населении, из которого я хочу сгенерировать выборку.У меня также есть фрейм данных sample_info
, в котором указано, сколько единиц каждой группы в фрейме данных population
мне нужно в моем образце.Я разработал некоторый код, который достигает того, что мне нужно, но он работает медленнее, чем хотелось бы, учитывая большие наборы данных, с которыми я работаю.
Есть ли способ сгруппировать структуру населения и применить выборку к группам, а нецикл через них, как я сделал ниже?
import pandas as pd
population = pd.DataFrame([[1,True],[1,False],[1,False],[2,True],[2,True],[2,False],[2, True]], columns = ['Group ID','Response'])
Group ID Response
0 1 True
1 1 False
2 1 False
3 2 True
4 2 True
5 2 False
6 2 True
sample_info = pd.DataFrame([[1,5],[2,6]], columns = ['Group ID','Sample Size'])
output = pd.DataFrame(columns = ['Group ID','Response'])
Group ID Sample Size
0 1 5
1 2 6
for index, row in sample_info.iterrows():
output = output.append(population.loc[population['Group ID'] == row['Group ID']].sample(n=row['Sample Size'], replace = True))
Я не мог придумать, чтобы ввести информацию о размере выборки, используя group-by, и применить, как предложено в Pandas: выборка каждой группы после groupby