2024-04-19 15:16:10 发布
网友
我有一个数据帧:
pd.DataFrame({"date": ["2018-12-21", "2018-12-22", "2018-05-04"], "price":[100,np.nan, 105]})
输出:
date price 2018-12-21 100.0 2018-12-22 NaN 2018-05-04 105.0
我试图.fillna()通过计算价格的值,前一天的价格。所以在本例中,NaN值将被100填充,因为我们将NaN值的日期减去一天。你知道吗
.fillna()
100
用途:
df = pd.DataFrame({"date": ["2018-12-21", "2018-12-22", "2018-05-04","2018-05-05", "2018-05-06","2018-05-09"], "price":[100,np.nan, 105, np.nan, 108, np.nan]}) print (df) date price 0 2018-12-21 100.0 1 2018-12-22 NaN 2 2018-05-04 105.0 3 2018-05-05 NaN 4 2018-05-06 108.0 5 2018-05-09 NaN
df['date'] = pd.to_datetime(df['date']) df = df.set_index('date') df['price'] = df['price'].combine_first(df['price'].shift(1, freq='d')) #alternative #df['price'] = df['price'].combine_first(df['price'].shift(1, freq='d')) print (df) price date 2018-12-21 100.0 2018-12-22 100.0 2018-05-04 105.0 2018-05-05 105.0 2018-05-06 108.0 2018-05-09 NaN
如果需要重新计算最后一个非缺失值(不是前一天):
df['price'] = df['price'].ffill() print (df) date price 0 2018-12-21 100.0 1 2018-12-22 100.0 2 2018-05-04 105.0 3 2018-05-05 105.0 4 2018-05-06 108.0 5 2018-05-09 108.0
用途:
如果需要重新计算最后一个非缺失值(不是前一天):
相关问题 更多 >
编程相关推荐