我知道以前有人问过这个问题,但我发现建议的解决办法对我不起作用,也许我试图做一些根本不可能做的事情,但让我解释一下。
我有一个时间序列data
,它的一些值为0
,我想用pandas.DataFrame.interpolate
来插入data
中的零。
代码:
import pandas as pd
import numpy as np
data = [0, -1.31527, -2.25448, -0.965348, -1.11168, -0.0506046, -0.605522,
2.01337, 0, 0, 2.41931, 0.821425, 0.402411, 0]
df = pd.DataFrame(data=data) # Data to pandas dataframe
df.replace(to_replace=0, value=np.nan, inplace=True) # Replace 0 by nan
ip = df.interpolate(method="nearest", order=3, limit=None,
limit_direction=None)
print(ip)
print(ip)
的结果:
0
0 NaN
1 -1.315270
2 -2.254480
3 -0.965348
4 -1.111680
5 -0.050605
6 -0.605522
7 2.013370
8 2.013370
9 2.419310
10 2.419310
11 0.821425
12 0.402411
13 NaN
- 问题:**Pandas不会插入
data
的第一个和最后一个值,而是将它们保留为零。我尝试了pandas.DataFrame.interpolate
的所有选项,但似乎无法插入data
的第一个和最后一个零。这是通过Pandas根本不可能实现的,还是我做错了什么?
- 问题:**Pandas不会插入
1条答案
按热度按时间vwoqyblh1#
你想要的是一个外推,你需要决定如何做。
您可以
ffill
/bfill
:输出:
或者使用样条曲线:
输出:
输出: