Pandas从列

时间:2016-11-18 09:49:46

标签: python pandas

在大数据集上使用Python Pandas时,如何根据列中的值在同一行中找到索引?

例如,如果我有这个数据集...

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

...如果我在列中的1000行(不包括第0行)之一中有这个值17,并且我想找出同一行中哪一个Item的值为17 ,我该怎么办?

例如,我想找出数据集中索引的项目x的内容和位置,如下所示......

           Column
Item x     17

...我怎么能用Pandas做这个,用这个值17作为参考?

3 个答案:

答案 0 :(得分:2)

使用boolean indexing

df.index[df.Column == 17]

如果需要排除第0行:

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']

答案 1 :(得分: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

答案 2 :(得分:1)

使用query

df.query('Column == 17')

使用index.tolist()获取商品列表

df.query('Column == 17').index.tolist()