Skip to main content
 首页 » 编程设计

python之如何快速将值从一个数据帧复制到另一个数据帧

2025年05月04日19wayfarer

我想在我的数据框 (Global_Dataset) 上创建一个基于另一个数据框 (List_Data) 的新列 (Col_val)。 我需要一个更快的代码,因为我有一个包含 200 万个样本的数据集,而 List_data 包含 50000 个样本。

Col_Val 必须根据 Col_Key

包含列 Value 的值

列表数据:

id     Key     Value 
1       5        0 
2       7        1 
3       9        2 

全局数据集:

id    Col_Key     Col_Val 
1        9           2 
2        5           0 
3        9           2  
4        7           1 
5        7           1 
6        5           0 
7        9           2 
8        7           1 
9        9           2 
10       5           0 

我试过这段代码,但需要很长时间才能执行。有没有其他更快的方法来实现我的目标?

Col_Val = [] 
for i in range (len(List_Data)): 
    for j in range (len(Global_Data)): 
        if List_Data.get_value(i, "Key") == Global_Data.get_value(j, 'Col_Key') : 
            Col_Val.append(List_Data.get_value(i, 'Value')) 
 
Global_Data['Col_Val'] = Col_Val 

PS:我已经尝试过 loc 和 iloc 而不是 get_value 但它工作起来很慢

请您参考如下方法:

试试这个:

data_dict = {key : value for key, value in zip(List_Data['Key'], List_Data['Value'])} 
Global_Data['Col_Val'] = pd.Series([data_dict[key] for key in Global_Data['Col_Key']]) 

我不知道你的机器需要多长时间处理你需要处理的数据量,但它应该比你现在使用的更快。
您还可以使用 data_dict = {row['Key'] : row['Value'] for _, row in list_data.iterrows()} 生成字典,但在我的机器上比我慢上面提出。

它的工作假设是 Global_Data['Col_Keys'] 中的所有键都存在于 List_Data['Key'] 中,否则你将得到一个 按键错误。