'22/05/21更新:全体の要素に対する処理方法に加えて、特定の列に対する処理方法も追記しました。
本記事では、pandasデータフレームに対して、各要素の値が指定した文字列の場合に、欠損値NaN(float型)へ置換する雛形コードを載せました。pandasのmask()メソッドで置換できます。
▼全体の要素に対して置換する場合
df2 = df.mask(df == '-', np.nan)
▼特定の要素に対して置換する場合
df2 = df.copy()
df2['y'] = df['y'].mask(df['y'] == '-', np.nan)
下図はその例です。下図左の「-」を下図右の「NaN」へ置換します。このNaNは文字列ではなく、numpyで作成したfloat型であって、pandasで欠損値として扱うことができます。
■本プログラム
import pandas as pd
df = pd.read_csv('test_data.csv')
df
import numpy as np
print('type -> ', type('-'))
print('np.nan -> ', type(np.nan))
df2 = df.mask(df == '-', np.nan)
df2 = df.copy()
df2['y'] = df['y'].mask(df['y'] == '-', np.nan)
df2
df2.dtypes
df2 = df2.astype('float')
df2['y'] = df['y'].astype('float')
df2.dtypes
df2.isna().sum()
df3 = df2.dropna(axis=0)
df3
df4 = df3.reset_index(drop=True)
df4
df4.index = np.arange(1, len(df4) + 1)
df4
以上
<広告>
リンク
リンク