TypeError:调用pd.to\u numeric时,字符串索引必须是整数

2024-10-03 17:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了以下类以将对象转换为数字类型:

class ConvertObjectToNum:
   def convert(dataframe, column):
       dataframe[column] = dataframe[column].apply(lambda x: pd.to_numeric(x, errors = 'coerce'))

像这样叫班级的时候

data_set['Qual'] = ConvertObjectToNum.convert('data_set', 'Qual')

我得到以下错误:

<ipython-input-20-4d0c321cdb16> in convert(dataframe, column)
     1 class ConvertObjectToNum:
     2     def convert(dataframe, column):
----> 3         dataframe[column] = dataframe[column].apply(lambda x: pd.to_numeric(x, errors = 'coerce'))
     4 
     5 

TypeError: string indices must be integers

但是,在我的类之外调用to_numeric函数就可以了。所以我想这一定是我如何构建类的问题:

data_set['Qual'] = data_set['Qual'].apply(lambda x: pd.to_numeric(x, errors = 'coerce'))

谢谢你的帮助

E:

列的值是字符串格式的数字。由于混入了一些“-”,因此出现了Errors='concure'参数


Tags: tolambdaconvertdataframedatacolumn数字pd
2条回答

也许这种方法可以起到以下作用:

df['col'] = pd.to_numeric(df['col'])

班级:

class ConvertObjectToNum:
   def convert(dataframe, column):
       dataframe[column] = pd.to_numeric(df[column])

这里有一个解决方案

import pandas as pd
class ConvertObjectToNum:
    @staticmethod
    def convert(dataframe, column):
        dataframe[column] = dataframe[column].apply(lambda x: pd.to_numeric(x, errors = 'coerce'))

df = pd.DataFrame({'Weight': [45, 88, 56, 15, 71]})
ConvertObjectToNum.convert(df, 'Weight')
print (df.dtypes) #  Weight    int64

我把这个方法变成了静态方法

相关问题 更多 >