如何有条件地用另一个填充数据帧

时间:2018-03-13 11:41:05

标签: python pandas dataframe find fill

我有两个不同尺寸的数据框,我想根据其他数据框中的相同值填充一列,这是一个例子:

Example

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数据帧更快地运行它吗?

2 个答案:

答案 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