Python 当索引不是自动递增时,如何获取行数。

Python 当索引不是自动递增时,如何获取行数。,python,pandas,Python,Pandas,df= 它给了我45 我想要2 请建议 过滤后使用索引: df[df.item == 'alcohol'].index Index(['row 2'], dtype='object') 如果希望输出为2,则: indices = df[df.item == 'alcohol'].index indices.str[-1:] Index(['2'], dtype='object') 如果需要列表: indices.str[-1:].tolist() ['2'] 如果行号超过1位,则使用:

df=

它给了我
45

我想要
2


请建议

过滤后使用索引:

df[df.item == 'alcohol'].index
Index(['row 2'], dtype='object')
如果希望输出为
2
,则:

indices = df[df.item == 'alcohol'].index
indices.str[-1:]
Index(['2'], dtype='object')
如果需要列表:

indices.str[-1:].tolist()
['2']
如果行号超过1位,则使用:

indices.extract(r'(\d+)',expand=False)
初始设置:

df = pd.DataFrame({"index":[23,45,89],"item":['food','alcohol','drinks']},
                  index=['row 1','row 2','row 3'])
df

     index  item
row 1   23  food
row 2   45  alcohol
row 3   89  drinks

如果可能,通过以下方式创建默认索引值:

使用任何索引值的解决方案:

out = next(iter(np.where(df.item == 'alcohol')[0]), 'not matched')
样本:

df = pd.DataFrame({'item': ['food','alcohol','drinks']}, index=[23,45,89])
print (df)
       item
23     food
45  alcohol
89   drinks

#test your output
print (df.index[df.item == 'alcohol'][0])
45

#python counts from 0, so for second value get 1
out = next(iter(np.where(df.item == 'alcohol')[0]), 'not matched')
print (out)
1

#condition not matched, so returned empty DataFrame
out = next(iter(np.where(df.item == 'a')[0]), 'not matched')
print (out)
not matched
它给你:

Index(['row 2'], dtype='object')
如果您想要“iloc”位置:

value_to_find = df.loc[df['item']== 'alcohol'].index.tolist()[0]
row_indexes = df.index.tolist()
position = row_indexes.index(value)
print(position)
注意:索引从0开始,您正在查找1,对吗?如果你想数行的话

position = row_indexes.index(value) + 1
使用

i、 e

Index(['row 2'], dtype='object')
value_to_find = df.loc[df['item']== 'alcohol'].index.tolist()[0]
row_indexes = df.index.tolist()
position = row_indexes.index(value)
print(position)
position = row_indexes.index(value) + 1
import pandas as pd
df = pd.DataFrame(columns = ['x'])
df.loc[10] = None
df.loc[20] = None
df.loc[30] = 1

print(df.index.get_loc(30))
>> 2