Python 无法将对象更改为在数据帧中浮动

Python 无法将对象更改为在数据帧中浮动,python,pandas,object,types,Python,Pandas,Object,Types,刚开始学习python。尝试将列数据类型从object更改为float,以去掉平均值。我试着把[]改成,甚至改成。我不知道这是否有区别。请帮我找出问题所在。谢谢 我的代码: df["normalized-losses"]=df["normalized-losses"].astype(float) 我看到的错误:附加为图像您不能使用-在属性或变量名称中。也许您的意思是标准化损失?您不能在属性或变量名称中使用。也许你的意思是标准化损失?使用: df['normalized-losses'] = d

刚开始学习python。尝试将列数据类型从object更改为float,以去掉平均值。我试着把[]改成,甚至改成。我不知道这是否有区别。请帮我找出问题所在。谢谢

我的代码:

df["normalized-losses"]=df["normalized-losses"].astype(float)
我看到的错误:附加为图像

您不能使用-在属性或变量名称中。也许您的意思是标准化损失?

您不能在属性或变量名称中使用。也许你的意思是标准化损失?

使用:

df['normalized-losses'] = df['normalized-losses'][~(df['normalized-losses'] == '?' )].astype(float)
使用df.normalized-loss会导致解释器评估不存在的df.normalized。您编写的语句执行df.normalized-loss.astypefloat。您的数据中似乎有一个无法转换为float的问号。上述语句仅将不包含问号的行转换为float,并删除其余的行。如果您不想删除列,可以使用以下命令将其替换为0:

df['normalized-losses'] = df['normalized-losses'].replace('?', 0.0)
df['normalized-losses'] = df['normalized-losses'].astype(float)
使用:

使用df.normalized-loss会导致解释器评估不存在的df.normalized。您编写的语句执行df.normalized-loss.astypefloat。您的数据中似乎有一个无法转换为float的问号。上述语句仅将不包含问号的行转换为float,并删除其余的行。如果您不想删除列,可以使用以下命令将其替换为0:

df['normalized-losses'] = df['normalized-losses'].replace('?', 0.0)
df['normalized-losses'] = df['normalized-losses'].astype(float)

欢迎使用Stack Overflow,祝您Python之旅好运!编码的一个重要部分是学习如何解释错误消息。在这种情况下,回溯非常有用——它告诉您不能在df之后调用normalized,因为dataframe没有这个名称的方法

当然,您没有尝试调用称为normalized的内容,而是调用normalized loss列。实现这一点的方法与您之前所做的一样-df[标准化损失]


至于你的主要问题——如果你的一个值不能被转换成浮点值,那么全列操作就会失败。这是很常见的。您需要首先删除列中的所有非数字项,找到它们的一种方法是使用df[~df['normalized_loss'].str.isnumeric]。

欢迎使用堆栈溢出,祝您在Python之旅中好运!编码的一个重要部分是学习如何解释错误消息。在这种情况下,回溯非常有用——它告诉您不能在df之后调用normalized,因为dataframe没有这个名称的方法

当然,您没有尝试调用称为normalized的内容,而是调用normalized loss列。实现这一点的方法与您之前所做的一样-df[标准化损失]


至于你的主要问题——如果你的一个值不能被转换成浮点值,那么全列操作就会失败。这是很常见的。首先需要删除列中的所有非数字项,找到它们的一种方法是使用df[~df['normalized_loss'].str.isnumeric]。

在这种情况下,df.normalized-loss对python没有任何意义。您可以将其替换为df[标准化损失]。通常,如果你尝试

df["normalized-losses"]=df["normalized-losses"].astype(float)

这应该行得通。这样做的目的是,它从dataframe中获取规范化的Loss列,将其转换为float,并将其重新分配到同一dataframe中的规范化列。但有时在您尝试上述语句之前可能需要一些数据处理。

在这种情况下,df.normalized-loss对python没有任何意义。您可以将其替换为df[标准化损失]。通常,如果你尝试

df["normalized-losses"]=df["normalized-losses"].astype(float)

这应该行得通。这样做的目的是,它从dataframe中获取规范化的Loss列,将其转换为float,并将其重新分配到同一dataframe中的规范化列。但有时在您尝试上述语句之前可能需要一些数据处理。

请格式化代码和回溯。选择代码并键入ctrl-k。。。我已经根据你的截图编辑了我的答案。请格式化代码和回溯。选择代码并键入ctrl-k。。。我已经根据你的截图编辑了我的答案。我得到了这个错误。我在这里做错了什么?ValueError回溯-->1 df[标准化损失]=df[标准化损失]中最后一次调用。astypefloat~\Anaconda3\lib\site packages\pandas\util\u decorators.py在wrapper*args中,**kwargs~\Anaconda3\lib\site packages\pandas\util\u decorators.py在wrapper*args中,**kwargs 175 else:176 kwargs[new_arg_name]=new_arg_value->177 return func*args,**kwargs 178 return wrapper 179 return\u deprecate_kwarg~\Anaconda3\lib\site packages\pandas\core\generic.py在astypeself中,dtype,copy,errors,**kwargs 4995 else,只有一个数据类型被赋予4996 new_data=self.\u data.astypedtype=dtype,copy=copy,errors=errors,->4997**kwargs 4998返回self.\u constructor或new\u data.\uuu finalize\uuu self 4999能否将此错误粘贴到
通过包含您在此答案中尝试的命令以及与“我已编辑我的帖子”相关联的错误消息来回答问题。检查是否仍有错误。我收到了这个错误。我在这里做错了什么?ValueError回溯-->1 df[标准化损失]=df[标准化损失]中最后一次调用。astypefloat~\Anaconda3\lib\site packages\pandas\util\u decorators.py在wrapper*args中,**kwargs~\Anaconda3\lib\site packages\pandas\util\u decorators.py在wrapper*args中,**kwargs 175 else:176 kwargs[new_arg_name]=new_arg_value->177 return func*args,**kwargs 178 return wrapper 179 return\u deprecate_kwarg~\Anaconda3\lib\site packages\pandas\core\generic.py在astypeself中,dtype,copy,errors,**kwargs 4995 else,只有一个数据类型被赋予4996 new_data=self.\u data.astypedtype=dtype,copy=copy,errors=errors,->4997**kwargs 4998返回self.\u constructor或new_data.\uuu finalize\uuu self 4999是否可以将此错误粘贴到问题中,方法是包含您在该答案中尝试的命令以及与之相关的错误消息我已编辑了我的帖子。检查它是否仍然给出任何错误如果我在标题中使用-并将其保持在下面,那么它是否会造成问题?@AarushiGoyal否,如果使用键查找访问它,您将不会有任何问题。您将无法使用点表示法。如果我在标题中使用-并将其保持在下方,那么它是否会造成问题?@AarushiGoyal否,如果您使用键查找访问它,您将不会遇到任何问题。您将无法使用点表示法。这里还有更多关于该主题的内容:因此,在标准化损失中,有一些条目丢失,并用?表示?。我需要用标准化损失的平均值来填充这些值。如果因为缺少平均数而找不到平均数,我如何填写平均数values@Aarushi您可能希望使用pd.to_numericdf['column_name'],errors='CONTRIVE',然后使用.dropna删除无效值,或者使用.fillna0引入一个值,该值将计入组中的项数,但不计入其总和…以及更多关于该主题的内容:因此,在标准化损失中,有一些条目丢失,并用?表示?。我需要用标准化损失的平均值来填充这些值。如果因为缺少平均数而找不到平均数,我如何填写平均数values@Aarushi您可能希望使用pd.to_numericdf['column\u name'],errors='improve',然后使用.dropna来消除无效值,或者使用.fillna0引入一个值,该值将计入组中的项数,但不计入其总和。。。