Skip to main content
 首页 » 编程设计

python之Pandas 子集根据另一个数据中的值从数据框中随机选择行数

2025年05月04日20EasonJim

我有两个 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