Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从数据帧而不是索引和对象类型中获取值_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何从数据帧而不是索引和对象类型中获取值

Python 如何从数据帧而不是索引和对象类型中获取值,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有以下数据帧 Letter Number A 1 B 2 C 3 D 4 现在我想从列字母中得到值C 命令行 df[df.Letters=='C'].Letters 会回来的 2 C Name: Letters, dtype: object 2 C 名称:字母,数据类型:对象 如何仅获取值C而不获取整个两行输出 df[df.Letters=='C'].Letters.item() 这将返回从该选择返回的

假设我有以下数据帧

Letter Number A 1 B 2 C 3 D 4 现在我想从列字母中得到值C

命令行

df[df.Letters=='C'].Letters
会回来的

2 C Name: Letters, dtype: object 2 C 名称:字母,数据类型:对象 如何仅获取值C而不获取整个两行输出

df[df.Letters=='C'].Letters.item()
这将返回从该选择返回的索引/序列中的第一个元素。在这种情况下,值始终是第一个元素

编辑:

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


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

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

Out[4]:
'C'
编辑

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

df.loc[df['Letters'] == 'C', 'Letters'].values[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'

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

df.loc[2,‘字母’]
#“C”
如果您喜欢“数字”列作为参考,可以将其设置为索引

df.set_索引(“数字”).loc[3,‘字母’]

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

在一个不相关的注释上,有一个更好的方法来构造数据帧:
pd.DataFrame({'Letters':Letters,'Numbers':Numbers})
它确实无关紧要,但是在您的选择中,您可以使用点符号访问列'Letters';df.loc[df.Letters=='C']。如果列名中有空格,您可能应该使用转换器将其去掉,就像从CSV或Excel文件导入一样。@thomas ato我将更新我的答案,但我不同意将列名修改为附加步骤,除非这是必要的,在这种情况下,我同意它不起作用difference@EdChum.. 在这种情况下:我们如何处理错误:“索引器:索引0超出大小为0的轴0的界限”我喜欢这种方法,但是我得到了警告:
FutureWarning:“item”已被弃用,并将在将来的版本中删除
@AlexG:您可以改用它:
df[df.Letters='C'].Letters.iloc[0]
。它生成结果序列中的第一个元素(也是唯一的)。使用loc[:1]仍然会在值旁边显示索引:(@AlexG和@Sonic Soul:尝试使用
df[df.Letters=='C'].Letters.squese()
。这与此相同。:)这并不能解决特定问题。如果索引未知,则代码没有帮助。第二个版本(将一列设置为索引)确实适用于这种情况。:)
import pandas as pd

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

>>> print(first_value)
'item_0'