在大数据集上使用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作为参考?
答案 0 :(得分:2)
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()