我需要将列中的所有值转换为float类型。但是,该列包含缺少的值,如下所示:
的数据我使用以下代码将所有值转换为float类型。第一个月但收到一条错误消息,告诉我们:TypeError:float()参数必须是字符串或数字,而不是“NoneType”我会感谢任何推荐。
laawzig21#
好吧,你的数据实际上是None,为了跳过它们,只需检查它们是否为None。我猜这能帮你完成任务
df['col'].apply(lambda x : float(x) if x is not None and x != '..' else np.nan)
字符串或者你可以使用这个:
def convert(x): try: return float(x) except ValueError: return np.nan df['col'].apply(convert)
型
m1m5dgzv2#
这在您的输入图片中并不清楚(请以文本形式发布),但您的输入数据框架实际上包含了 None 和 '.'
一行,就地转换:
df['col'] = np.where(df['col']=='..', None, df['col']).astype('float')
字符串
或者,分解步骤简化语法:(不需要numpy.where)
(0)* 初始数据框架的模型:(请以文字形式代替图片)*
df = pd.DataFrame({'col' : ['-0.123',None, '..']}) df col 0 -0.123 1 None 2 '..'
型(1)首先,通过将值为“..”的单元格替换为 None 来管理数据:
df.loc[df['col']=='..'] = None df col 0 -0.123 1 None 2 None
型(2)然后应用数据类型转换:
df['col'] = df['col'].astype('float64') df col 0 -0.123 1 NaN 2 NaN
型缺少的数据被转换为“不是数字”。生成的数据类型符合要求:
df.dtypes col float64 dtype: object
型更进一步:更多的pandas内置column-wise datatype converters可以用来代替你自己的lambda函数。
2条答案
按热度按时间laawzig21#
好吧,你的数据实际上是None,为了跳过它们,只需检查它们是否为None。
我猜这能帮你完成任务
字符串
或者你可以使用这个:
型
m1m5dgzv2#
编辑总结
这在您的输入图片中并不清楚(请以文本形式发布),但您的输入数据框架实际上包含了 None 和 '.'
改编答案:
一行,就地转换:
字符串
或者,分解步骤简化语法:(不需要numpy.where)
(0)* 初始数据框架的模型:(请以文字形式代替图片)*
型
(1)首先,通过将值为“..”的单元格替换为 None 来管理数据:
型
(2)然后应用数据类型转换:
型
缺少的数据被转换为“不是数字”。生成的数据类型符合要求:
型
更进一步:更多的pandas内置column-wise datatype converters可以用来代替你自己的lambda函数。