首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Pandas中获取数据中的行号?

如何在Pandas中获取数据中的行号?
EN

Stack Overflow用户
提问于 2017-04-03 20:42:20
回答 10查看 272.9K关注 0票数 75

如何使用Pandas在包含某一列中某个值的dataframe中获得行号?例如,我有以下数据:

代码语言:javascript
运行
复制
     ClientID  LastName
0    34        Johnson
1    67        Smith
2    53        Brows  

如何找到'LastName‘列中有'Smith’的行号?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2017-04-03 20:48:10

请注意,dataframe的索引可能是无序的,甚至根本不是数字。如果不想使用当前索引,而是按顺序重编号行,则可以将df.reset_index()与以下建议一起使用

获取与“Smith”匹配的所有索引

代码语言:javascript
运行
复制
>>> df[df['LastName'] == 'Smith'].index
Int64Index([1], dtype='int64')

或者作为一个numpy数组

代码语言:javascript
运行
复制
>>> df[df['LastName'] == 'Smith'].index.to_numpy()  # .values on older versions
array([1])

或者,如果只有一个,并且你想要整数,你可以子集

代码语言:javascript
运行
复制
>>> df[df['LastName'] == 'Smith'].index[0]
1

您可以在.loc中使用相同的布尔表达式,但不需要它,除非您还想选择某个列,当您只需要行号/索引时,这是多余的。

票数 74
EN

Stack Overflow用户

发布于 2017-04-03 20:48:43

代码语言:javascript
运行
复制
df.index[df.LastName == 'Smith']

代码语言:javascript
运行
复制
df.query('LastName == "Smith"').index

将返回LastNameSmith的所有行索引。

代码语言:javascript
运行
复制
Int64Index([1], dtype='int64')
票数 14
EN

Stack Overflow用户

发布于 2017-04-03 20:49:30

代码语言:javascript
运行
复制
df.loc[df.LastName == 'Smith']

将返回行。

代码语言:javascript
运行
复制
    ClientID    LastName
1   67          Smith

代码语言:javascript
运行
复制
df.loc[df.LastName == 'Smith'].index

将返回索引。

代码语言:javascript
运行
复制
Int64Index([1], dtype='int64')

注意:列名'LastName‘和’姓氏‘甚至’姓氏‘是三个唯一的名称。最好的做法是首先使用df.columns检查确切的名称。如果您确实需要删除所有空格的列名,可以先这样做。

代码语言:javascript
运行
复制
df.columns = [x.strip().replace(' ', '') for x in df.columns]
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43193880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档