我试图将正确的FinalZone从df5分配到df7。
df7:
OrigZone DestZone FinalZone
5 6 (output should be 9)
8 5 (output should be 2)
df5(FinalZone查找表):
Zip3 1 2 3 4 5 6
5 7 2 3 5 8 9
6 3 1 5 8 8 8
7 3 3 8 8 9 1
8 5 5 6 6 2 2
def zone_assign(row):
return df5.iloc[df5.loc[df5['ZIP3']==row['OrigZone']].index,row['DestZone']]
df7.apply(zone_assign, axis=1)
当我跑这个时,我得到了一张打印输出我的df5,里面有一堆NaN
。我迷路了。
答案 0 :(得分:2)
我认为你需要lookup
#df5=(df5.set_index('Zip3'))
#df5.columns=df5.columns.astype(int)
df7['FinalZone']=df5.lookup(df7.OrigZone,df7.DestZone)
df7
Out[130]:
OrigZone DestZone FinalZone
0 5 6 9
1 8 5 2
答案 1 :(得分:1)
这是一种方法,假设您的df5
列是整数。
df7['FinalZone'] = df7.apply(lambda x: df5.loc[x['OrigZone'], x['DestZone']], axis=1)
print(df7)
# OrigZone DestZone FinalZone
# 0 5 6 9
# 1 8 5 2