我希望通过另一个系列索引一个系列会产生一个新系列,其索引与索引系列相同。然而,它是被索引的索引和索引系列的组合。
跑步
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。
相反,我原本期望 for 的索引A[B]与 相同B.index,就好像组成两个映射一样。为什么不是这样?当前设置是否有用(在我看来这没用)?有没有“正确”的方法来获得我正在寻找的东西?
这个问题使某些操作变得棘手。例如,
B[A[B] == 2]
直观地说是如何选择 B 的条目,其值在 A 中查找时为 2。(如果 B 是一个 DataFrame 在一列中有一些对象 ID,并且我们想根据值选择 B 的行,这很有用该对象存储在辅助表中。)但是,这会产生ValueError: cannot reindex from a duplicate axis异常。如果您删除索引,这将起作用:
B[(A[B] == 2).values]
是使用.values正确的方法来做到这一点还是有更好的方法?
慕尼黑5688855
相关分类