我有两个不同尺寸的数据框,我想根据其他数据框中的相同值填充一列,这是一个例子:
DATA1尺寸大于DATA2尺寸
我尝试用for循环运行它,但它太慢了:
for i in range(0,len(DATA1.index):
for j in range(0,DATA2.index):
if DATA1['val1'][i] == DATA2['val3'][j]:
DATA1['val2'][i] = DATA2['val4'][j]:
还有其他方法可以使用pandas数据帧更快地运行它吗?
答案 0 :(得分:0)
没试过,但应该有所帮助
dictionary = dict(zip(DATA2["val3"], DATA2["val4"]))
DATA1["val2"] = DATA1["val1"].map(dictionary)
如果不试试这个
dictionary = dict(zip(DATA2["val3"], DATA2["val4"]))
DATA1["new_val"] = DATA1["val1"].map(dictionary)
答案 1 :(得分:0)
尝试将val3重命名为val1,并根据列名val1
合并数据帧data2.rename(columns={'val3': 'val1'}
data=pd.merge(data1,data2,on=['val1'],how='left')
del data['val2'] #since that column will still have the 0's