我希望一个系列对另一个系列进行索引将产生一个索引与索引系列相同的新系列。然而,它是索引的索引和索引系列的组合
运行
A = pandas.Series(range(3), index=list("ABC"))
B = pandas.Series(list("AABBCC"), index=list("XYZWVU"))
print(A[B])
屈服
A 0
A 0
B 1
B 1
C 2
C 2
dtype: int64
所以这里的索引的形状是B.index
,但是值是A.index
相反,我希望A[B]
的索引将与B.index
相同,就像组成两个映射一样。为什么不是这样?当前设置是否有用(在我看来,它是无用的)?有没有一种“正确”的方式来获得我想要的东西
这个问题使得某些操作变得棘手。比如说,
B[A[B] == 2]
直观地说,当在A中查找B的条目时,如何选择其值为2的条目(如果B是一个数据帧,在一列中有一些对象ID,并且我们希望根据存储在辅助表中的该对象的值来选择B的行,那么这很有用。)但是这会产生一个ValueError: cannot reindex from a duplicate axis
异常。如果删除索引,则此操作有效:
B[(A[B] == 2).values]
使用.values
是正确的方法还是有更好的方法
在我看来,索引就是选择相应的索引。所以实际上
A[B]
在A.index
中仍然应该有index
如果您想映射这些值,则使用
map
。而且速度似乎也更快:以及:
相关问题 更多 >
编程相关推荐