Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:仅将数据框中的数字转换为数字,保留所有其他内容 源数据帧 首先尝试使用“强制”_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫:仅将数据框中的数字转换为数字,保留所有其他内容 源数据帧 首先尝试使用“强制”

Python 熊猫:仅将数据框中的数字转换为数字,保留所有其他内容 源数据帧 首先尝试使用“强制”,python,pandas,dataframe,Python,Pandas,Dataframe,如果我使用“强制”来处理字符串,它们将被NaN替换 df2 = df1.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce')) x y 0 NaN 4.0 1 2.0 NaN 2 3.0 6.0 第二次尝试使用“忽略” 如果我使用“ignore”来处理字符串,则整列不会得到转换后的数字仍然保留为文本字符串 df2 = df1.apply(lambda x: p

如果我使用“强制”来处理字符串,它们将被NaN替换

df2 = df1.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce'))

    x   y
0   NaN 4.0
1   2.0 NaN
2   3.0 6.0
第二次尝试使用“忽略” 如果我使用“ignore”来处理字符串,则整列不会得到转换后的数字仍然保留为文本字符串

df2 = df1.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='ignore'))

    x   y
0   a   4.0
1   2.0 b
2   3.0 6.0

这是预期的输出,因为如果选中,您可以看到:

错误:{'ignore','raise','concurve',},默认值为'raise'

如果为“raise”,则无效解析将引发异常 如果为“强制”,则无效解析将设置为NaN 如果为“忽略”,则无效解析将返回输入

可能的解决方案是用原始值替换缺少的值-但在注释中使用混合数字字符串值,如pointed@anky_91:

df2 = df1.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce'))
或:

检查类型:

print (df3.applymap(type))
                 x                y
0    <class 'str'>  <class 'float'>
1  <class 'float'>    <class 'str'>
2  <class 'float'>  <class 'float'>

这是预期的输出,因为如果选中,您可以看到:

错误:{'ignore','raise','concurve',},默认值为'raise'

如果为“raise”,则无效解析将引发异常 如果为“强制”,则无效解析将设置为NaN 如果为“忽略”,则无效解析将返回输入

可能的解决方案是用原始值替换缺少的值-但在注释中使用混合数字字符串值,如pointed@anky_91:

df2 = df1.apply(lambda x: pd.to_numeric(x.astype(str).str.replace(',',''), errors='coerce'))
或:

检查类型:

print (df3.applymap(type))
                 x                y
0    <class 'str'>  <class 'float'>
1  <class 'float'>    <class 'str'>
2  <class 'float'>  <class 'float'>

所以您需要混合数据类型,但对于该系列,数据类型应该是int/float?这一点很好-因此每列都有一个数据类型。在这种情况下,是的,它应该是混合的。我想稍后将此数据框导出到excel。数字应该以数字的形式出现在那里。这正是我要尝试的。所以你想要混合数据类型,但是对于这个系列来说,数据类型应该是int/float?很好的一点是,每列都有一个数据类型。在这种情况下,是的,它应该是混合的。我想稍后将此数据框导出到excel。数字应该以数字的形式出现在那里。这就是我正在尝试的。是的,我认为这是一个转储问题,因为数据类型是分配给列的,我不能有混合的数据类型。我很困惑,因为我想稍后将其导出到excel,数字应该显示为数字。实际上,您的解决方案将列转换为数字,然后返回到对象。这是有道理的,但对我没有帮助。当我稍后将其字符串再次导出到excel时。@Lorenz-是的,很遗憾,因为转换后的数据帧具有带字符串的数字-可以通过打印df3来检查它。ApplyMapType实际上,这是有效的。数字现在在excel中是数字。并且保留所有文本字符串。令人惊叹的非常感谢你!是的,我认为这实际上是一个转储问题,因为数据类型是分配给列的,我不能有混合的数据类型。我很困惑,因为我想稍后将其导出到excel,数字应该显示为数字。实际上,您的解决方案将列转换为数字,然后返回到对象。这是有道理的,但对我没有帮助。当我稍后将其字符串再次导出到excel时。@Lorenz-是的,很遗憾,因为转换后的数据帧具有带字符串的数字-可以通过打印df3来检查它。ApplyMapType实际上,这是有效的。数字现在在excel中是数字。并且保留所有文本字符串。令人惊叹的非常感谢你!
print (df3.applymap(type))
                 x                y
0    <class 'str'>  <class 'float'>
1  <class 'float'>    <class 'str'>
2  <class 'float'>  <class 'float'>