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

时间:2015-05-17 18:33:07

标签: python pandas

想象一下,我有一个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等命令。

1 个答案:

答案 0 :(得分:3)

您可以使用locnp.diagonal的组合来实现此目标:

In [26]:

np.diagonal(x.loc[y])
Out[26]:
array([0, 3, 1], dtype=int64)

loc这里将执行行标签查找:

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列顺序不同,上述内容也适用。