2017-05-17 8 views
0

私のデータフレームの最後のステップは、すべてのNaN値を0(ゼロ)に変換することです。私のデータフレームには1000以上の列があり、いくつかはテキストであり、いくつかは整数であり、いくつかは浮動小数点です。これを何pandas dataframe; NaNを0に変換する際のエラー

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' 

:私は次のエラーを与える新しいデータで新しい列を追加するまで、これがうまく働いた

#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) 

: は、私は、次のコマンドを使用し、0にはNaNを変換するにはエラーの平均と、どのように私はこれを解決することができますか?私はこれが動作する問題を正しく理解していた場合

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 
+0

は、それはあなたが整数にそれを変換することはできませんカラムとパンダの1の値 ' 'NODE_1_length_402490_cov_43.5825_ID_1''があることを意味します。 fillna部分ではなく、エラーを発生させる '.astype(int)'です。 – ayhan

+0

データを見ることなく伝えるのは難しいですが、文字列をintに変換しようとしているようです。特定の列の値のいずれかが欠落している場合は、列全体をループしていることが原因です。いくつかのデータを投稿できますか? – spies006

答えて

0

私のデータフレームは、このようになります。

nan_cols = df5c.columns[df5c.isnull().any(axis=0)] 

for col in nan_cols: 
    for i in range(len(df5c)): 
     if pd.isnull(df5c.loc[i, col]): 
      data.loc[i, col] = data.loc[i, col] = 0 
関連する問題