x = DataFrame({ 'a': [7,6,8,0,2,5],
'b': [3,4,5,6,7,8],
'c': [3,8,5,6,0,1]}, index=[1,2,3,4,5,6])
然后,我有一个pandas.Series,它为每个键提供了一个我要选择的特定索引:
y = Series([4,1,6], index=['a','b','c'])
有办法以最佳的方式找到这些索引吗?
我希望避免循环遍历pandas.Series或pandas.Dataframe,并且我更喜欢使用.loc,.query等命令.
解决方法:
您可以结合使用loc和np.diagonal来实现此目的:
In [26]:
np.diagonal(x.loc[y])
Out[26]:
array([0, 3, 1], dtype=int64)
loc here将执行行标签查找:
In [27]:
x.loc[y]
Out[27]:
a b c
4 0 6 6
1 7 3 3
6 5 8 1
np.diagonal
返回对角线中的值.
为了使此顺序对列顺序更健壮,我们可以专门使用标签查找的值和要选择的列的索引:
In [30]:
np.diagonal(x.loc[y.values, y.index])
Out[30]:
array([0, 3, 1], dtype=int64)
即使y中的列与x列的顺序不同,上述方法也适用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。