我有两个 Pandas 数据框。
df1:
d = {'col1': ["A", "A","A","B","B","C"], 'col2': [3, 4,5,6,7,8]}
e = pd.DataFrame(data=d)
df2:
f = {'col1': ["A","B","C"], 'col2': [2,1,1]}
g = pd.DataFrame(data=f)
我想根据 df2 中 col2 的值随机选择 df1 中的行,用于每个对应的 col1 值。例如,在 df2 中,A 的计数为 2,B 的计数为 1,依此类推。我想随机使用 df2 和子集 df1 中的这个计数值。为了使其更明确,子集 df1 的所需输出是:
col1 col2
0 A 3
1 A 4
2 B 7
3 C 8
上面的dataframe有两行A,1行B和1行C,同时保留了所有的列值。
请您参考如下方法:
您可以使用带参数 n 的样本
count = df2.set_index('col1')['col2'].to_dict()
df1.groupby('col1').apply(lambda x: x.sample(n=count[x.name])).reset_index(drop = True)
col1 col2
0 A 4
1 A 3
2 B 6
3 C 8
