从数据框中选择特定的值

17 浏览
0 Comments

从数据框中选择特定的值

我想从数据框中选择一个值。但问题是输出结果包含数据类型和列名。

这是我从CSV文件中读取的数据框:

Name,Code
blackberry,1
wineberry,2
rasberry,1
blueberry,1
mulberry,2

这是我的测试代码:

dataFrame=pd.read_csv("test.csv")
value = dataFrame.loc[dataFrame['Name'] == 'rasberry']['Code']
print(value)
strvalue=str(value)
if(strvalue=="1"):
    print("got it")

`value`的预期输出应该是`1`,但实际上是:

2  1\nName: Code, dtype: int64

这就是为什么if条件不起作用。我该如何获取特定的值?

我正在使用`pandas`。

0
0 Comments

在处理数据框时,有时候我们需要从中选择特定的值。然而,有时候我们会遇到一些问题,即无法直接从数据框中选择特定的值。下面我们来看看这个问题的出现原因以及解决方法。

当我们选择特定的值时,我们得到的是一个Series对象。例如,我们可以使用`.iloc`来从中提取值:

value.iloc[0]
# 1

另外,我们也可以使用`.values`来提取底层的numpy数组,然后使用索引来提取值:

value.values[0]
# 1

出现这个问题的原因是,当我们从数据框中选择特定的值时,返回的是一个Series对象。这是因为数据框是由多个Series对象构成的,每个Series对象代表数据框中的一列。因此,我们需要使用特定的方法来从Series对象中提取出我们需要的值。

解决这个问题的方法有两种。第一种方法是使用`.iloc`方法,它允许我们通过索引位置来选择值。通过传入索引位置0,我们可以提取出Series对象中的第一个值。

第二种方法是使用`.values`方法。这个方法将返回底层的numpy数组,我们可以通过索引来提取值。在这种情况下,我们可以通过传入索引位置0来提取数组中的第一个值。

我们可以通过使用`.iloc`或`.values`方法来从数据框中选择特定的值。这些方法允许我们从Series对象中提取值,以满足我们的需求。

0
0 Comments

选择数据框中特定值的问题是由于以下原因引起的:

1. `dataFrame['Name']` 返回一个 `pd.Series` 对象。

2. `dataFrame['Name'] == 'rasberry'` 返回一个 `pd.Series` 对象,其 `dtype` 为 `bool`。

3. `dataFrame.loc[dataFrame['Name'] == 'rasberry']` 使用布尔类型的 `pd.Series` 对象对 `dataFrame` 进行切片,返回一个子集的 `pd.DataFrame` 对象。

4. `dataFrame.loc[dataFrame['Name'] == 'rasberry']['code']` 是一个 `pd.Series` 对象,表示切片后的数据框中名为 `'code'` 的列。

- 如果你期望 `'Name'` 列中的元素是唯一的,则这将是一个只有一行的 `pd.Series` 对象。

- 你想要的元素在这一点上是 `'value'` 和 `['value']` 之间的区别。

解决这个问题的方法有以下几种:

1. 使用 `iloc` 获取第一个值:

dataFrame=pd.read_csv(StringIO(txt))
value = dataFrame.query('Name == "rasberry"').Code.iloc[0]
print(value)

2. 使用 `iat` 获取第一个值:

dataFrame=pd.read_csv(StringIO(txt))
value = dataFrame.query('Name == "rasberry"').Code.iat[0]
print(value)

3. 在读取 csv 文件时指定索引列,并使用 `loc`:

dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.loc['rasberry', 'Code']
print(value)

4. 在读取 csv 文件时指定索引列,并使用 `at`:

dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.at['rasberry', 'Code']
print(value)

5. 在读取 csv 文件时指定索引列,并使用 `get_value`:

dataFrame=pd.read_csv(StringIO(txt), index_col='Name')
value = dataFrame.get_value('rasberry', 'Code')
print(value)

6. 在读取 csv 文件时指定索引列,并使用 `squeeze` 将其转换为系列(如果只有一个非索引列):

series=pd.read_csv(StringIO(txt), index_col='Name', squeeze=True)
value = series.rasberry
print(value)

0