Pandas 从列中查找值的索引

11

在处理大型数据集时,如何使用Python Pandas在同一行中基于列值找到索引?

例如,如果我有以下数据集...

           Column
Item 1     0
Item 2     20
Item 3     34
...
Item 1000  12

如果我在1000行的某一列(不包括第0行)中有数值17,我想找出在同一行中具有该数值17的Item是哪一个,我该如何做呢?

例如,我想找出数据集中以下所示的Item x的索引位置是什么和在哪里...

           Column
Item x     17

使用Pandas,以这个值17作为参考,我该如何做到这一点?

3个回答

12
使用 布尔索引
df.index[df.Column == 17]

如果需要排除第一行:

df1 = df.iloc[1:]
df1.index[df1.Column == 17]

示例:

df = pd.DataFrame({'Column': {'Item 1': 0, 'Item 2': 20, 'Item 5': 12, 'Item 3': 34, 'Item 7': 17}})
print (df)
       Column
Item 1       0
Item 2      20
Item 3      34
Item 5      12
Item 7      17

print (df.index[df.Column == 17])
Index(['Item 7'], dtype='object')

print (df.index[df.Column == 17].tolist())
['Item 7']

df1 = df.iloc[1:]
print (df1)
        Column
Item 2      20
Item 3      34
Item 5      12
Item 7      17

print (df1.index[df1.Column == 17].tolist())
['Item 7']

如果这个列有一个名称,比如“第一支柱”,那么代码会是什么样子?我尝试了你的代码,并将df的名称更改为new [new.Column == 17],但它返回错误。 - Dorky
我认为你需要 print (df[df['First Pillar'] == 17]) - jezrael
你可以使用 df = pd.DataFrame({'First Pillar': {'Item 1': 0, 'Item 2': 20, 'Item 5': 12, 'Item 3': 34, 'Item 7': 17}}) 进行测试 print(df) - jezrael
这对于浮点数列值无效 :// - obscuredbyclouds

2

使用query

df.query('Column == 17')

使用index.tolist()获取项目列表。
df.query('Column == 17').index.tolist()

2

我尝试了上面的方法,但对我没有用。然后我再仔细想了想,意识到我把它搞得比必要的还要复杂。以下是我在自己的程序中使用的方法来实现此功能:

x = 17
df = pandas.DataFrame({'Item':[1,2,3,150],'Column':[0,20,34,17]})
response = df[df['Column'] == x].iloc[0]['Item']

print(response)

输出:

150

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接