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

标签 python dataframe

我想在我的数据框 (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'] 中,否则你将得到一个 按键错误

关于python - 如何快速将值从一个数据帧复制到另一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56044427/

相关文章:

python - Django 根据另一个表检索表数据

python - Flask_form : CSRF Token do not match

python - 映射 2 个数据帧并替换目标数据帧中匹配值的 header

r - 使用二进制值格式化 data.frame

python - 展平 Pandas Dataframes 中的列并引用原始资料

python - ImportError:html5lib 中没有名为 base 的模块

python - 为什么在 python 中对 asyncio 服务器的多个请求的时间会增加?

python - 什么是符号张量,为什么它们会抛出 "use ` steps_per_epoch` argument“错误?

python - 基于列中的约束处理 pandas 数据框中的聚合

python - 在 Pandas 数据框中,使用 bool 输出,如何检测两个不同列(行)的交叉?