从其他列值匹配的dataframe2更新dataframe1的列中的值

时间:2019-06-03 22:45:51

标签: python pandas dataframe

我正在尝试使用第二个数据帧df2中的值来更新数据帧df1中用于隔离行的列的值。 df1和df2的形状不匹配。要选择df1中的行,我必须匹配df1和df2中的列值。

我成功地更新了df1,方法是将df2中的值读取到字典中,并使用np.where函数将key:values对与df1匹配。

# generating a dictionary with key:value pairs from df2 with columnnamesofinterest
columnnamesofinterest = ['Col1', 'Col2', 'Col3', 'Col4', 'Col5', 'Col6']
dict1 = {}
for index, row in df2.iterrows():
    for i in df2_columnnamesofinterest:
        d = {i:row[i]}
        dict1 = update(d)

#updating df1['Col6'] with value from df2['Col6'] for selected rows only where values of other/selected columns match 
df1['Col6'] = (np.where((df1['Col1']==dict1['Col1']) & (df1['Col2']==dict1['Col2']) & (df1['Col3']==dict1['Col3']) & (df1['Col3']==dict1['Col3']) & (df1['Col4']==dict1['Col4']) &
(df1['Col5']==dict1['Col5']), dict1['Col6'], ('nomatch')))

我的问题是,这需要非常非常长的时间才能完成。 我想知道您是否知道用df2中的值有选择地更新df1的更快方法。 (我基本上是在尝试模仿JMP的“更新”功能)

0 个答案:

没有答案