我有一个数据框,其中包含行程信息,另一个包含位置和区域信息
Origin Coordinates Time
0 Victoria x,y 15:32
1 Wembley x,y 14:00
2 Canary Wharf x,y 11:00
3 Stratford x,y 09:00
Station Zone
0 Victoria 1
1 Waterloo 1
2 Stratford 2
我想从第二个数据帧中获取信息,并在第一个数据帧中添加一个带有适当区域的“OriginZone”列
到目前为止,我尝试了以下方法:
def getZone(Station):
return stations[stations.Station == Station]['Zone'].values[0]
df['OriginZone'] = getZone(df['Origin'])
ValueError:只能比较标签相同的系列对象
首先,为什么我会犯这个错误?我怎样才能避开这个问题呢
我想你正在寻找你的数据帧。如果第一个数据帧为
df_1
,第二个数据帧为df_2
,请尝试以下操作:返回:
请注意,
NaN
之所以存在,是因为这些电台的df_2
中缺少Zone
数据解释:使用
merge
,它组合了两个数据帧,其中df_1['Origin']
匹配df_2['Station']
。我选择了how = 'left'
,这样它就不会从缺少数据的左侧数据帧(df_1
)中删除行,最后,我删除了额外的Station
列,这是您不需要的至于为什么会出现这个错误,我认为代码试图做的一些事情是不起作用的,但我突然想到的主要问题是,您正在调用
getZone
,并使用pd.Series
作为参数,因此,它试图将stations
数据帧(在您的示例中,长度为4)与df['Origin']
(长度为3)进行比较。即使长度和索引匹配,但是,我不确定这是否会达到您想要的。您可以使用循环和.loc
语句来实现这一点,但这会很笨拙merge
存在的原因如下相关问题 更多 >
编程相关推荐