Python - 複数の列を文字列から浮動小数点および整数に変換する

okwaves2024-01-25  9

df 内の複数の列を文字列から整数および浮動小数点数に変換しようとしています。 fillna メソッドを使用して NaN 値を削除しましたが、それでもエラーが発生します。私がやったことは次のとおりです。

df = [['column1', 'column2', 'column3', 'column4']]

df = df[['column1', 'column2', 'column3', 'column4']].fillna(0)
convert_dict = {'column1': int,
                 'column2': float,
                  'column3': int, 
                    'column4': float}
df = df.astype(convert_dict)

エラーには「ValueError: float NaN を integer に変換できません」と表示されます。

編集: inplace=True を削除

1

int に変換したい列には np.nan があります

– ベニー

2020 年 9 月 3 日 17:19

1

df = [[...]].fillna(0, inplace=True) は意味がありません。そこに df が欠落していると仮定します。結果を df に割り当てる場合は、inplace は必要ありません。

– Aチャンピオン

2020 年 9 月 3 日 17:20

@BEN_YO はい。 np.nan は fillna と連携しますか?

– ssmm

2020 年 9 月 3 日 17:20

1

df = [['column1'... の代わりに df = df[['column1'...] を使用する必要がありますか?

– リッチーV

2020 年 9 月 3 日 17:32

1

df = df.astype(convert_dict,errors = 'ignore') は機能するはずです。

– r0ot293

2020 年 9 月 3 日 17:44



------------------------

Int64 を使用することもできます。ich は欠落している整数値をサポートしています:

import numpy as np
import pandas as pd

df = pd.DataFrame({'A': [1, 2, None, 4], 
                   'B': [1.0, 2.0, 3.0, None]})

convert_dict = {'A': 'Int64', 'B': float}
convert_dict

for field, new_type in convert_dict.items():
    df[field] = df[field].astype(new_type)

print(df)
print(df.dtypes)

      A    B
0     1  1.0
1     2  2.0
2  <NA>  3.0
3     4  NaN

A      Int64
B    float64
dtype: object

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。