将值从df存储到变量

时间:2018-10-26 21:43:12

标签: python pandas indexing

我正在尝试从数据框中提取一个值并将其放入变量中。然后,我将把该值记录到Excel工作簿中。

首先,我运行一个SQL查询并将其存储到df中:

df = pd.read_sql(strSQL, conn)

我正在浏览另一个项目列表,并在df中查找它们。它们通过df中的MMString和MMConcat从我正在遍历的项目列表中进行连接。

dftemp = df.loc[df['MMString'] == MMConcat]
Category = dftemp['CategoryName'].item()

我在上面的代码的最后一行收到以下错误。 ValueError:只能将大小为1的数组转换为Python标量

在调试控制台中,当我运行最后一行代码但不将其存储到变量中时,我得到了看起来像字符串值的东西。例如,“皮卡车”。

如何简单地将在df中查找的值存储到变量中?

1 个答案:

答案 0 :(得分:0)

loc按行进行索引以返回序列,然后通过iat提取第一个值:

Category = df.loc[df['MMString'] == MMConcat, 'CategoryName'].iat[0]

或者,从NumPy数组表示中获取第一个值:

Category = df.loc[df['MMString'] == MMConcat, 'CategoryName'].values[0]

文档没有帮助,但是pd.Series.item仅调用np.ndarray.item,仅适用于具有一个值的系列:

pd.Series([1]).item()     # 1
pd.Series([1, 2]).item()  # ValueError: can only convert an array of size 1