How to replace NaNs by preceding values in pandas DataFrame?

前端 未结 9 2237
無奈伤痛
無奈伤痛 2020-11-22 06:04

Suppose I have a DataFrame with some NaNs:

>>> import pandas as pd
>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, N         


        
9条回答
  •  野的像风
    2020-11-22 06:53

    In my case, we have time series from different devices but some devices could not send any value during some period. So we should create NA values for every device and time period and after that do fillna.

    df = pd.DataFrame([["device1", 1, 'first val of device1'], ["device2", 2, 'first val of device2'], ["device3", 3, 'first val of device3']])
    df.pivot(index=1, columns=0, values=2).fillna(method='ffill').unstack().reset_index(name='value')
    

    Result:

            0   1   value
    0   device1     1   first val of device1
    1   device1     2   first val of device1
    2   device1     3   first val of device1
    3   device2     1   None
    4   device2     2   first val of device2
    5   device2     3   first val of device2
    6   device3     1   None
    7   device3     2   None
    8   device3     3   first val of device3
    

提交回复
热议问题