【发布时间】:2020-06-24 12:01:18
【问题描述】:
我有两个数据框。一个数据框 (df1) 有 75799 行,另一个数据框 (df2) 有 13715 行。
df1
OBJECTID ENABLED DATECREATED DATEMODIFIED OWNER STATUS ACCURACY INSTALLATIONDATE
2 1 23/08/2001 0:00:00 3/04/2020 0:00:00 ABC In Service Unknown 26/09/1969 0:00:00
8 1 23/08/2001 0:00:00 3/04/2020 0:00:00 ABC In Service Unknown 23/08/1989 0:00:00
12 1 23/08/2001 0:00:00 3/04/2020 0:00:00 ABC In Service Unknown 13/04/1971 0:00:00
19 1 23/08/2001 0:00:00 3/04/2020 0:00:00 ABC In Service Unknown 22/03/1976 0:00:00
df2:
OBJECTID FID_OHElectricLineSegment_2k ENABLED DATECREATED DATEMODIFIED OWNER
1 19 1 23/08/2001 0:00:00 3/04/2020 0:00:00 AUR
2 41 1 23/08/2001 0:00:00 2/04/2020 0:00:00 AUR
3 98 1 23/08/2001 0:00:00 3/04/2020 0:00:00 CONS
4 167 1 23/08/2001 0:00:00 3/04/2020 0:00:00 CONS
我将 df1 的 OBJECTID 与 df2 的 FID_OHElectricLineSegment_2k 进行比较,并在 df1 'zone' 列中创建一个新列,如果两列具有相同的值,则插入值 1。这是我的做法:
df1.loc[np.searchsorted(df1['OBJECTID'].values,df2['FID_OHElectricLineSegment_2k'].values),'Zone']=1
但是,它返回一个错误
KeyError: '[75799] not in index'
我可以理解 df1 的总行数为 75799(0 到 75798),但是我不明白 np.searchsorted() 是如何返回不存在的索引值的。谁能帮助我我在哪里犯了错误?
【问题讨论】:
标签: python python-3.x pandas dataframe