0
我的數據框的最後一步是將所有NaN值轉換爲0(零)。我的數據框包含1000多列,有些是文本,有些是整數,有些是浮點數。 楠轉換爲0,我用下面的命令:pandas dataframe;在將NaN轉換爲0時出現錯誤
#replace nan in columns with 0
nan_cols = df5c.columns[df5c.isnull().any(axis=0)]
for col in nan_cols:
df5c[col] = df5c[col].fillna(0).astype(int)
這工作得很好,直到我添加新數據的新列,它提供了以下錯誤:
Traceback (most recent call last):
File "pythonscript_v8.py", line 233, in <module>
df5c[col] = df5c[col].fillna(0).astype(int)
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 2632, in astype
dtype=dtype, copy=copy, raise_on_error=raise_on_error, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line 2864, in astype
return self.apply('astype', dtype=dtype, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line 2823, in apply
applied = getattr(b, f)(**kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line 430, in astype
values=values, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line 472, in _astype
values = com._astype_nansafe(values.ravel(), dtype, copy=True)
File "/usr/lib/python3/dist-packages/pandas/core/common.py", line 2463, in _astype_nansafe
return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape)
File "pandas/lib.pyx", line 935, in pandas.lib.astype_intsafe (pandas/lib.c:16612)
File "pandas/src/util.pxd", line 60, in util.set_value_at (pandas/lib.c:66830)
ValueError: invalid literal for int() with base 10: 'NODE_1_length_402490_cov_43.5825_ID_1'
這說明什麼錯誤的意思,我該如何解決這個問題?
我的數據框看起來是這樣的:
source contigID contig_length SCM/genes plasmid_genes/genes A053_1 parA_1
COLS157_1 NODE_1_length_402490_cov_43.5825_ID_1 402490 0.87 0.95 NaN NaN
COLS157_10 NODE_10_length_218177_cov_45.105_ID_19 218177 0.79 0.97 NaN NaN
COLS157_100 NODE_157_length_248_cov_34.4628_ID_313 248 NaN NaN NaN NaN
COLS157_11 NODE_11_length_176130_cov_51.1495_ID_21 176130 0.75 0.86 NaN NaN
COLS157_12 NODE_12_length_165446_cov_50.2044_ID_23 165446 0.77 0.88 NaN NaN
這意味着你必須在列和大熊貓的一個值''NODE_1_length_402490_cov_43.5825_ID_1''無法轉換爲整型。它不是fillna部分,而是引發錯誤的'.type(int)'。 – ayhan
不看數據很難說,但它看起來像你試圖將字符串轉換爲int。這可能是由於您在給定列中的任何值丟失時正在循環遍歷整個列。你能發佈一些你的數據嗎? – spies006