如何使用Pandas在包含某一列中某个值的dataframe中获得行号?例如,我有以下数据:
ClientID LastName
0 34 Johnson
1 67 Smith
2 53 Brows
如何找到'LastName‘列中有'Smith’的行号?
发布于 2017-04-03 20:48:10
请注意,dataframe的索引可能是无序的,甚至根本不是数字。如果不想使用当前索引,而是按顺序重编号行,则可以将df.reset_index()
与以下建议一起使用
获取与“Smith”匹配的所有索引
>>> df[df['LastName'] == 'Smith'].index
Int64Index([1], dtype='int64')
或者作为一个numpy数组
>>> df[df['LastName'] == 'Smith'].index.to_numpy() # .values on older versions
array([1])
或者,如果只有一个,并且你想要整数,你可以子集
>>> df[df['LastName'] == 'Smith'].index[0]
1
您可以在.loc
中使用相同的布尔表达式,但不需要它,除非您还想选择某个列,当您只需要行号/索引时,这是多余的。
发布于 2017-04-03 20:48:43
df.index[df.LastName == 'Smith']
或
df.query('LastName == "Smith"').index
将返回LastName
为Smith
的所有行索引。
Int64Index([1], dtype='int64')
发布于 2017-04-03 20:49:30
df.loc[df.LastName == 'Smith']
将返回行。
ClientID LastName
1 67 Smith
和
df.loc[df.LastName == 'Smith'].index
将返回索引。
Int64Index([1], dtype='int64')
注意:列名'LastName‘和’姓氏‘甚至’姓氏‘是三个唯一的名称。最好的做法是首先使用df.columns检查确切的名称。如果您确实需要删除所有空格的列名,可以先这样做。
df.columns = [x.strip().replace(' ', '') for x in df.columns]
https://stackoverflow.com/questions/43193880
复制相似问题