我想矢量化我的代码,并尝试
df['results'] = coord.loc[df['a'],'x_coord'] * coord.loc[df['b'],'y_coord']
但是它返回错误“ValueError:无法在具有重复标签的轴上重新索引”,因为df ['a]和df [' b ']都包含重复值。这些不能被移除,因为它们是整个点(df包含坐标,因此存在像(1,0),(1,1),(0,1)等这样的对)。
这个使用apply的版本工作得很好,但是太慢了(实际的dfs有接近一百万行,并且有数千行需要处理):
def calc(a,b):
result = coord.loc[a,'x_coord'] * coord.loc[b,'y_coord']
return result
df['results'] = df.apply(lambda row: calc(row['a'],row['b']),axis=1)
任何关于如何修复错误或其他矢量化/加速此位的方法的提示都是受欢迎的!
1条答案
按热度按时间epggiuax1#
这是因为
coord
或df
具有重复索引。你可以把它们转换成numpy数组: