我正在尝试从数据框中提取一个值并将其放入变量中。然后,我将把该值记录到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中查找的值存储到变量中?
答案 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