说我有以下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而不是整个两行输出?
非常感谢。
爱德华
答案 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'