

DataFrame/Seriesの欠損値を、定数で補完したいのですが、内挿[limit_area='inside']を指定する方法ありますでしょうか？  
両端の欠損値はそのまま補完しないようにしたいです。

[code]

    import pandas as pd
    
    series = pd.Series(data=[ None, 20, None, 40, None ], index=[ 'aa', 'bb', 'cc', 'dd', 'ee' ], name='value')
    print('◇元データ')
    display(series.to_frame())
    
    # series = series.fillna(0, limit_area='inside') # ←series.interpolate()と同様にinsideオプションを指定したい。
    print('◇↓期待する欠損値補間結果（定数で内挿入したい。外挿したくない。）')
    series = pd.Series(data=[ None, 20, 0, 40, None ], index=[ 'aa', 'bb', 'cc', 'dd', 'ee' ], name='value')
    display(series.to_frame())
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/nYSDZ.png)](https://i.stack.imgur.com/nYSDZ.png)

回答ありがとうございます。  
first_valid_index/last_valid_indexメソッドで解決できました。

[code]

    ################################################################################
    import pandas as pd
    series = pd.Series(
        # data=[ None, None, None, None, None, None ],
        data=[ None, None, 20, None, 40, None ],
        index=[
            pd.Timestamp('2022/01/10'),
            pd.Timestamp('2022/01/11'),
            pd.Timestamp('2022/01/12'),
            pd.Timestamp('2022/01/13'),
            pd.Timestamp('2022/01/14'),
            pd.Timestamp('2022/01/15')
        ], name='value'
    )
    print('◇元データ')
    display(series.to_frame())
    
    index_low = series.first_valid_index()
    index_high = series.last_valid_index()
    if index_low is not None:
        series.loc[index_low:index_high] = series.loc[index_low:index_high].fillna(0)
    display(series.to_frame())
    
[/code]


CC BY-SA 4.0
2022-01-13T11:35:24.330
85667
2022-01-16T06:50:02.870
2022-01-16T06:50:02.870
35267
35267
question
python python3 pandas
DataFrame/Seriesの欠損値を定数で補完するとき、内挿のみに指定したい


ありがとうございます。  
両端の欠損値がいくつ続くか分からない場合は、どうするべきでしょうか。  
質問内容が不明確ですいませんでした。

[code]

    import pandas as pd
    series = pd.Series(
        data=[ None, None, 20, None, 40, None ],
        index=[
            pd.Timestamp('2022/01/10'),
            pd.Timestamp('2022/01/11'),
            pd.Timestamp('2022/01/12'),
            pd.Timestamp('2022/01/13'),
            pd.Timestamp('2022/01/14'),
            pd.Timestamp('2022/01/15')
        ], name='value'
    )
    print('◇元データ')
    display(series.to_frame())
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/LqXyf.png)](https://i.stack.imgur.com/LqXyf.png)


CC BY-SA 4.0
2022-01-14T01:01:38.857
85677
2022-01-14T01:01:38.857
48481
85667
answer