【发布时间】:2021-01-13 20:49:41
【问题描述】:
我正在尝试在 pandas 数据框中的所有数据的时间点之间进行插值。我当前数据的时间增量为 0.04 秒。我希望它以 0.01 秒为增量来匹配另一个数据集。我意识到我可以使用 DataFrame.interpolate() 函数来做到这一点。但是,我被困在如何以有效的方式在我的数据帧的每一行之间插入 3 行 NaN。
import pandas as pd
import numpy as np
df = pd.DataFrame(data={"Time": [0.0, 0.04, 0.08, 0.12],
"Pulse": [76, 74, 77, 80],
"O2":[99, 100, 99, 98]})
df_ins = pd.DataFrame(data={"Time": [np.nan, np.nan, np.nan],
"Pulse": [np.nan, np.nan, np.nan],
"O2":[np.nan, np.nan, np.nan]})
我希望 df 从此转换:
Time Pulse O2
0 0.00 76 99
1 0.04 74 100
2 0.08 77 99
3 0.12 80 98
这样的:
Time Pulse O2
0 0.00 76 99
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 0.04 74 100
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN NaN
8 0.08 77 99
9 NaN NaN NaN
10 NaN NaN NaN
11 NaN NaN NaN
12 0.12 80 98
然后我可以调用它
df = df.interpolate()
这会产生这样的结果(我在这里编造数字):
Time Pulse O2
0 0.00 76 99
1 0.01 76 99
2 0.02 75 99
3 0.03 74 100
4 0.04 74 100
5 0.05 75 100
6 0.06 76 99
7 0.07 77 99
8 0.08 77 99
9 0.09 77 99
10 0.10 78 98
11 0.11 79 98
12 0.12 80 98
我尝试通过在每一行之后插入 df_ins 帧来使用 iterrows 技术。但是我的索引在迭代过程中被丢弃了。我还尝试对 df 进行切片并将 df 切片和 df_ins 连接起来,但索引再次被循环抛出。
有人对如何有效地做到这一点有任何建议吗?
【问题讨论】:
标签: python pandas dataframe numpy linear-interpolation