.apply(pd.to_numeric) 返回错误消息

AlK*_*AlK 1 python

我有一个包含两列的数据框,我想将其转换为数字类型。我使用以下代码:

df[["GP","G"]]=df[["GP","G"]].apply(pd.to_numeric)
Run Code Online (Sandbox Code Playgroud)

Python 返回以下错误消息:

File "C:\Users\Alexandros_7\Anaconda3\lib\site-packages\pandas\core\frame.py", line 4157, in _apply_standard
results[i] = func(v)

File "C:\Users\Alexandros_7\Anaconda3\lib\site-packages\pandas\tools\util.py", line 115, in to_numeric
coerce_numeric=coerce_numeric)

File "pandas\src\inference.pyx", line 612, in pandas.lib.maybe_convert_numeric (pandas\lib.c:53558)

File "pandas\src\inference.pyx", line 598, in      pandas.lib.maybe_convert_numeric (pandas\lib.c:53344)

ValueError: ('Unable to parse string', 'occurred at index GP')
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?如何使用命令一次转换多个列类型?谢谢你!

qma*_*ruf 5

仅当所有数据都可以解析为数字时,您的代码才有效。

\n\n

如果不是,则数据框中至少有一个值不可转换为数字。errors在这种情况下,您可以根据您的选择使用参数。这是一个例子。

\n\n
>>> df = pd.DataFrame({\'A\' : list(\'aabbcd\'), \'B\' : list(\'ffghhe\')})\n\n>>> df\n   A  B\n0  a  f\n1  a  f\n2  b  g\n3  b  h\n4  c  h\n5  d  e\n\n>>> df.apply(pd.to_numeric, errors=\'ignore\')\n   A  B\n0  a  f\n1  a  f\n2  b  g\n3  b  h\n4  c  h\n5  d  e\n\n>>> df.apply(pd.to_numeric, errors=\'coerce\')\n    A   B\n0 NaN NaN\n1 NaN NaN\n2 NaN NaN\n3 NaN NaN\n4 NaN NaN\n5 NaN NaN\n\n>>> df.apply(pd.to_numeric, errors=\'raise\')\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\n  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4042, in apply\n    return self._apply_standard(f, axis, reduce=reduce)\n  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4138, in _apply_standard\n    results[i] = func(v)\n  File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 4020, in f\n    return func(x, *args, **kwds)\n  File "/usr/local/lib/python2.7/dist-packages/pandas/tools/util.py", line 98, in to_numeric\n    coerce_numeric=coerce_numeric)\n  File "pandas/src/inference.pyx", line 612, in pandas.lib.maybe_convert_numeric (pandas/lib.c:53932)\n  File "pandas/src/inference.pyx", line 598, in pandas.lib.maybe_convert_numeric (pandas/lib.c:53719)\nValueError: (\'Unable to parse string\', u\'occurred at index A\')\n>>> \n
Run Code Online (Sandbox Code Playgroud)\n\n

这是文档errors

\n\n
\n

错误:{\xe2\x80\x98忽略\xe2\x80\x99,\xe2\x80\x98raise\xe2\x80\x99,\xe2\x80\x98coerce\xe2\x80\x99},默认\xe2\x80\x98raise \xe2\x80\x99

\n\n

如果 \xe2\x80\x98raise\xe2\x80\x99,则无效解析将引发异常

\n\n

如果 \xe2\x80\x98coerce\xe2\x80\x99,则无效解析将被设置为 NaN

\n\n

如果 \xe2\x80\x98ignore\xe2\x80\x99,则无效解析将返回输入

\n
\n