Python Pandas:如何在按标签选择和按索引选择之间切换



我知道我们有按标签选择的方法loc[]iloc[]按索引选择的方法。但是当我想从一个更改为另一个甚至混合它们时,我正在挣扎。

假设我们有动物的数据及其统计数据:

import pandas as pd
csv = [
['cat', 5, 2, 9],
['dog', 7, 8, 6],
['fish', 3, 1, 4]
]
df = pd.DataFrame(csv, columns=['animal', 'speed', 'strength', 'agility'])
df = df.set_index('animal')

现在我想知道狗的力量。我跑:

df.loc['dog','strength']

我得到了所需的输出。但是,如果现在我想知道哪些索引与此输出相关联,该怎么办?

而相反的情况。假设我知道索引并运行:

df.iloc[1][1]

但现在我想知道哪种动物和哪个统计数据与这个结果有关。

换句话说,如何知道"狗"是行 = 1,"强度"是列 = 1,反之亦然?

此外,如果我想组合标签和索引怎么办。在我的示例中,它将类似于"获取狗行的第二列"。我该怎么做?

谢谢。

我们可以使用get_indexer

i, j = df.index.get_indexer(['dog']),df.columns.get_indexer(['strength'])
i
Out[522]: array([1], dtype=int64)
j
Out[523]: array([1], dtype=int64)
df.iloc[i,j]
Out[528]: 
strength
animal          
dog            8

如果在括号中添加了索引/列标题,则将返回数据帧而不是标量值。 例如:

df.loc[['dog'],['strength']]

输出:

strength
animal          
dog            8

df.iloc[[1],[1]]

输出:

strength
animal          
dog            8

最新更新