
interpolate() を使うと NaN (欠損値) を前後の値を使って穴埋めすることができます。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.interpolate.html
import 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 を指定します。