Pandas:如何通过行索引和列名获取单元格值

7

假设我们有一个Pandas数据框:

   name  age  sal
0  Alex   20  100
1  Jane   15  200
2  John   25  300
3   Lsd   23  392
4   Mari  21  380

假设有几行现在已经被删除了,我们不知道哪些索引已经被删除。例如,我们使用df.drop([1]) 删除了第1行的索引,因此数据框现在变为:

  fname  age  sal
0  Alex   20  100
2  John   25  300
3   Lsd   23  392
4   Mari  21  380

我想获取第三行和"age"列的值。它应该返回23。怎么做呢?

df.loc[3, 'age']不起作用,因为它将返回21。我猜iloc是连续的行索引吗?


那么最好将索引设置为“fname”:df = df.set_index('fname')。如果您要通过该方式引用行,则使用任意整数索引没有太大意义,因为您可以使用更好的东西。(除非“fname”中可能存在重复项) - smci
1
不应该猜测,而是要阅读文档并在此处使用 loc :) - Mustafa Aydın
我认为这个线程回答了你的问题:https://dev59.com/31wZ5IYBdhLWcg3wVO5U - Tushar Mazumdar
相关问题:"pandas loc vs. iloc vs. at vs. iat?" - outis
4个回答

18

使用.loc按标签获取行,使用.iloc按位置获取行:

>>> df.loc[3, 'age']
23

>>> df.iloc[2, df.columns.get_loc('age')]
23

更多关于索引和选择数据的内容


1
除了接受的答案之外,还有另一种方法:df.at[3, "age"]

0
尝试这个: [标签,列名]

value = df.loc[1,"column_name"]

0
dataset = ({'name':['Alex', 'Jane', 'John', 'Lsd', 'Mari'],
       'age': [20, 15, 25, 23, 21],
       'sal': [100, 200, 300, 392, 380]})
df = pd.DataFrame(dataset)
df.drop([1], inplace=True)
df.loc[3,['age']]

5
请将以下英文文本翻译成中文。这是与信息技术相关的内容,请只翻译文本内容,不要加入机器翻译的风格,并确保提供支持性的文字信息来解释您的答案为什么可行。 - rikyeah

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