簡體   English   中英

Pandas 數據幀 .at ValueError:無法將字符串轉換為浮點數

[英]Pandas dataframe .at ValueError : cannot convert string to float

我正在嘗試為已經包含一些信息的數據框中的特定單元格填充值。 當我用小數據測試它時,它可以工作,但在我的項目中它拋出“ValueError : cannot convert string to float”

# 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_list 中的元素和值是字符串。 這里現有的數據幀是數據,其中一列是“Some Column”,索引標簽是 some_list 中的一些元素(因此,如果 some_list 中的當前元素 x 是索引標簽之一,則在單元格(行:索引標簽 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 - 你的錯誤來自這樣一個事實,即你試圖將string對象打包到帶有dtype float 的列中。 .at[]不做任何列類型的自動轉換。

在將string分配給單元格之前,請確保它是object

import pandas as pd

import numpy as np

df=pd.DataFrame(data={"x": list("abc"), "y": [1,2,3], "z": [np.nan for i in range(3)]}, index=["p", "q", "r"])

print(df)
#this works fine:
df.at["r", "z"]=4.5

print(df)
#without the line below it will fail:
df["z"]=df["z"].astype(str)
df.at["q", "z"]="z"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM