Python dataframe.at ValueError:无法将字符串转换为浮点

Python dataframe.at ValueError:无法将字符串转换为浮点,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在数据框中填充一个特定单元格的值,该数据框中已经有一些信息。当我用小数据测试它时,它可以工作,但在我的项目中,它抛出ValueError:无法将字符串转换为浮点 # df : a dataframe with data to be extracted and added to another dataframe data some_list = df.iloc[:, 0].values values = df.iloc[:, 1].values indexList = data.ind

我试图在数据框中填充一个特定单元格的值,该数据框中已经有一些信息。当我用小数据测试它时,它可以工作,但在我的项目中,它抛出ValueError:无法将字符串转换为浮点

# df : a dataframe with data to be extracted and added to another dataframe data

some_list = df.iloc[:, 0].values
values = df.iloc[:, 1].values

indexList = data.index.values.tolist()

index = 0
for x in some_list:
    s = values[index]
    if x in indexList:
        # this line raised ValueError : cannot convert __(values in s)__ from string to float
        data.at[x, 'Some Column'] = s
    index += 1
某些列表中的元素和值是字符串。在这里,现有数据框是数据,其中一列是“Some column”,索引标签是Some_列表中的一些元素。因此,如果Some_列表中的当前元素x是索引标签之一,请将单元格行中的值设置为:index label x,column:“Some column”为值[找到该x的同一行]

在填写单元格之前,“某些列”下应为NaN

我尝试使用一个小示例测试.at函数,但没有引发valueError:

column=['Year', 'first', 'second', 'third']
s = 'label1'
data = pd.DataFrame(columns=column)
row = pd.Series({'Year' : 2019, 'first' : 'asa', 'second' : 'awdqw'}, name=s)
data = data.append(row)


# Creates a pandas DataFrame. 
data_snip = {'name':['A', 'B', 'C', 'D'], 'y':[1, 2, 3, 4]} 
df = pd.DataFrame(data_snip, index =['one', 'two', 'three', 'four'])
df_array = df.iloc[:, 0].values
s = df_array[3] # should be 'D'

s = 'label3'
row = pd.Series({'Year' : 2030, 'first' : 'ubeubf', 'second' : 'qov.z'}, name=s)
data = data.append(row)
data.at['label3', 'third'] = s
这就是数据的样子:

        Year   first second third
label1  2019     asa  awdqw   NaN
label3  2030  ubeubf  qov.z     D
任何帮助都将不胜感激

检查df.dtypes-您的错误来自这样一个事实,即您试图将字符串对象打包到带有dtype float的列中。at[]不执行任何列类型的自动转换

将字符串指定给单元格之前,请确保其为object dtype:

作为pd进口熊猫 将numpy作为np导入 df=pd.DataFramedata={x:listabc,y:[1,2,3],z:[np.nan代表范围3中的i]},index=[p,q,r] printdf 这很好: 在[r,z]处的df=4.5 printdf 如果没有下面的行,它将失败: df[z]=df[z].astypestr df.at[q,z]=z 检查df.dtypes-您的错误源于这样一个事实,即您正试图使用dtype float将字符串对象打包到列中。at[]不执行任何列类型的自动转换

将字符串指定给单元格之前,请确保其为object dtype:

作为pd进口熊猫 将numpy作为np导入 df=pd.DataFramedata={x:listabc,y:[1,2,3],z:[np.nan代表范围3中的i]},index=[p,q,r] printdf 这很好: 在[r,z]处的df=4.5 printdf 如果没有下面的行,它将失败: df[z]=df[z].astypestr df.at[q,z]=z