我正在尝试使用第二个数据帧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的“更新”功能)