interpolate()
を使うと NaN (欠損値) を前後の値を使って穴埋めすることができます。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.interpolate.htmlimport numpy as np
import pandas as pd
df = pd.DataFrame({'col_1': [0, 1, 2, np.nan,4, np.nan, np.nan, 5],
'col_2': ['foo', np.nan,'bar', 'val', 'foo', np.nan,'bar', 'val'],})
df
col_1 | col_2 | |
---|---|---|
0 | 0.0 | foo |
1 | 1.0 | NaN |
2 | 2.0 | bar |
3 | NaN | val |
4 | 4.0 | foo |
5 | NaN | NaN |
6 | NaN | bar |
7 | 5.0 | val |
interpolate()
で穴埋めします。df.interpolate()
col_1 | col_2 | |
---|---|---|
0 | 0.000000 | foo |
1 | 1.000000 | NaN |
2 | 2.000000 | bar |
3 | 3.000000 | val |
4 | 4.000000 | foo |
5 | 4.333333 | NaN |
6 | 4.666667 | bar |
7 | 5.000000 | val |
ffill
, bfill
を指定します。df.interpolate('ffill')
col_1 | col_2 | |
---|---|---|
0 | 0.0 | foo |
1 | 1.0 | foo |
2 | 2.0 | bar |
3 | 2.0 | val |
4 | 4.0 | foo |
5 | 4.0 | foo |
6 | 4.0 | bar |
7 | 5.0 | val |
df.interpolate('bfill')
ffill
, bfill
を指定します。