如何从Pandas DataFrame中获取值,而不是索引和对象类型

时间:2015-06-11 17:48:35

标签: python pandas dataframe

说我有以下DataFrame

Letter    Number
A          1
B          2
C          3
D          4

可以通过以下代码获得

import pandas as pd

letters=pd.Series(('A', 'B', 'C', 'D'))
numbers=pd.Series((1, 2, 3, 4))
keys=('Letters', 'Numbers')
df=pd.concat((letters, numbers), axis=1, keys=keys)

现在我想从列字母中获取值C.

命令行

df[df.Letters=='C'].Letters

将返回

2    C
Name: Letters, dtype: object

我的问题是:我怎么才能得到值C而不是整个两行输出?

非常感谢。
爱德华

4 个答案:

答案 0 :(得分:91)

df[df.Letters=='C'].Letters.item()

这将返回从该选择返回的Index / Series中的第一个元素。在这种情况下,值始终是第一个元素。

修改

或者您可以运行loc()并以该方式访问第一个元素。这个更短,是我过去实现它的方式。

答案 1 :(得分:26)

使用values属性将值作为np数组返回,然后使用[0]获取第一个值:

In [4]:
df.loc[df.Letters=='C','Letters'].values[0]

Out[4]:
'C'

修改

我个人更喜欢使用下标运算符访问列:

df.loc[df['Letters'] == 'C', 'Letters'].values[0]

这可以避免列名称可以包含空格或短划线-的问题,这意味着使用.进行访问。

答案 2 :(得分:1)

您可以将 loc 与索引和列标签一起使用。

df.loc[2, 'Letters']
# 'C'

如果您更喜欢“数字”列作为参考,可以将其设置为索引。

df.set_index('Numbers').loc[3, 'Letters']

我觉得这个更干净,因为它不需要 [0].item()

答案 3 :(得分:0)

import pandas as pd

dataset = pd.read_csv("data.csv")
values = list(x for x in dataset["column name"])

>>> values[0]
'item_0'

编辑:

实际上,您可以像对任何旧数组一样索引数据集。

import pandas as pd

dataset = pd.read_csv("data.csv")
first_value = dataset["column name"][0]

>>> print(first_value)
'item_0'