不知道索引如何获取Series的第一个元素

131

如果不知道索引,是否有办法访问Series的第一个元素?

假设我有以下Series:

import pandas as pd

key='MCS096'
SUBJECTS = pd.DataFrame(
    {
        "ID": pd.Series([146], index=[145]),
        "study": pd.Series(["MCS"], index=[145]),
        "center": pd.Series(["Mag"], index=[145]),
        "initials": pd.Series(["MCS096"], index=[145]),
    }
)

打印出SUBJECTS

print(SUBJECTS[SUBJECTS.initials==key]['ID'])
>>> 145    146
>>> Name: ID, dtype: int64

我该如何在不使用索引145的情况下获得这里的值146?


11
只需要执行 (SUBJECTS[SUBJECTS.initials==key]['ID']).values[0] 即可。请注意,翻译时不改变原意,使语言更加易懂,不提供额外解释或其他内容。 - Gregor
@Andy Hayden的回答是正确的。你应该接受它。 - Amos Bordowitz
1个回答

205

使用iloc按位置访问(而不是标签):

In [11]: df = pd.DataFrame([[1, 2], [3, 4]], ['a', 'b'], ['A', 'B'])

In [12]: df
Out[12]: 
   A  B
a  1  2
b  3  4

In [13]: df.iloc[0]  # first row in a DataFrame
Out[13]: 
A    1
B    2
Name: a, dtype: int64

In [14]: df['A'].iloc[0]  # first item in a Series (Column)
Out[14]: 1

1
这个如何使用Series而不是DataFrame来完成呢?我们需要先转换Series吗? - sobrio35
抱歉,我之前在另一个项目中使用了这个代码 df['A'].iloc[0] 时出现了错误,但是某些原因导致 df.iloc[0]['A'] 没有出错。 - sobrio35
如果您想对一个系列执行此操作,您也可以执行以下操作:ser.reset_index(drop=True,inplace=True)ser[0] - robbwh
@GenericWevers 你为什么认为 ilocSeries 上不起作用?在这个特定的答案中,有一个它可以使用的例子。 - Antony Hatchkins
@AntonyHatchkins 在我尝试的时候它没有起作用。今天我再试了一次,你是对的。 - Generic Wevers
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接