简体   繁体   中英

Fill in missing values in pandas dataframe using mean

datetime
2012-01-01    125.5010
2012-01-02    NaN
2012-01-03    125.5010
2013-01-04    NaN
2013-01-05    125.5010
2013-02-28    125.5010
2014-02-28    125.5010
2016-01-02    125.5010
2016-01-04    125.5010
2016-02-28    NaN

I would like to fill in the missig values in this dataframe by using a climatology computed from the dataset ie fill in missing 28th feb 2016 value by averaging values of 28th feb from other years. How do i do this?

You can use groupby by month and day and transform with fillna mean :

print df.groupby([df.index.month, df.index.day]).transform(lambda x: x.fillna(x.mean()))
datetime           
2012-01-01  125.501
2012-01-02  125.501
2012-01-03  125.501
2013-01-04  125.501
2013-01-05  125.501
2013-02-28  125.501
2014-02-28  125.501
2016-01-02  125.501
2016-01-04  125.501
2016-02-28  125.501

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM