我有一个大数据框,其中包含37,000,000行和一个字典。 对于字典中的每个键,将搜索数据帧的第一列,如果有任何行等于该键,则该键的值将被添加到数据帧的第二列。这是一个小例子:
dictionary = {'a':'asfg', 'b': 'jkh', 'c': 'jhjf' }
数据框:
结果数据框:
以下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]
最后,我使用多重处理来加快此过程,但它并不是最佳选择。 有没有更快的方法可以做到这一点?
答案 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