快速搜索熊猫数据框并根据条件在数据框的另一列中插入值

时间:2020-10-11 16:34:46

标签: python pandas dataframe

我有一个大数据框,其中包含37,000,000行和一个字典。 对于字典中的每个键,将搜索数据帧的第一列,如果有任何行等于该键,则该键的值将被添加到数据帧的第二列。这是一个小例子:

dictionary = {'a':'asfg', 'b': 'jkh', 'c': 'jhjf' }

数据框:

enter image description here

结果数据框:

enter image description here

以下for循环需要很长时间才能填充数据帧的第二列。

for key in dictionary:
    df.loc[df[1] == key, ‘column2’] = dictionary[key]

接下来,我尝试将索引设置为数据帧的第一列以加快搜索速度,但还不够快:

df1 = df.set_index([1])
for key in dictionary:
    df1.loc[key, ‘column2’] = dictionary[key]

最后,我使用多重处理来加快此过程,但它并不是最佳选择。 有没有更快的方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

为什么不使用map函数?

dictionary = {'a':'asfg', 'b': 'jkh', 'c': 'jhjf' }
df = pd.DataFrame({'col1':["a",'a',"b","c","a"],'col2':["","","","",""]})
df['col2'] = df["col1"].map(dictionary)

输出:


col1    col2
0   a   asfg
1   a   asfg
2   b   jkh
3   c   jhjf
4   a   asfg