基于Python/Pandas关联从第二个表随机选取值的实现方法
实现随机关联DataFrame的解决方案
步骤说明
我们可以通过分组构建值映射 + 逐行随机选取的方式实现需求,具体代码如下:
代码实现
首先导入依赖并构造示例DataFrame:
import pandas as pd import random # 构造第一个DataFrame df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'A', 'B']}) # 构造第二个DataFrame df2 = pd.DataFrame({ 'key': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'], 'value': [3, 2, 4, 5, 2, 8, 7, 1, 5] })
接着构建每个key对应的可选值列表:
# 按key分组,将每组的value转为列表并生成映射字典 key_value_map = df2.groupby('key')['value'].apply(list).to_dict()
最后为df1的每一行随机选取对应值:
# 为每个key随机挑选一个对应value df1['random_value'] = df1['key'].apply(lambda x: random.choice(key_value_map[x])) # 查看结果 print(df1)
示例输出
运行后会得到类似如下的结果(因为随机选取,每次输出可能不同):
key random_value 0 A 2 1 B 8 2 C 1 3 A 4 4 B 7
可选优化
如果需要固定随机结果以便复现,可以在代码开头添加随机种子:
random.seed(42) # 设置固定种子,保证每次运行结果一致
内容的提问来源于stack exchange,提问作者Richard Dixon
相关产品推荐
相关产品推荐

