微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何从每一列中选择一个特定的索引?

假设我有一个pandas.Dataframe像:

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 举报,一经查实,本站将立刻删除。

相关推荐