【发布时间】:2025-11-26 17:10:01
【问题描述】:
假设我正在处理一个数据集,其中有一个列名“F_N”,其中包含按 10、20、30、nan、50、nan、70 之类的顺序排列的数值。在这里,我希望这些空位置填充 40 , 和 60 在熊猫的帮助下在各自的地方。我知道 fillna(method=ffill),但它会给我们 30 和 50 个精确值,而不是模式。
【问题讨论】:
假设我正在处理一个数据集,其中有一个列名“F_N”,其中包含按 10、20、30、nan、50、nan、70 之类的顺序排列的数值。在这里,我希望这些空位置填充 40 , 和 60 在熊猫的帮助下在各自的地方。我知道 fillna(method=ffill),但它会给我们 30 和 50 个精确值,而不是模式。
【问题讨论】:
对interpolate使用线性插值:
df['F_N'] = df['F_N'].interpolate()
>>> df
F_N
0 10.0
1 20.0
2 30.0
3 40.0
4 50.0
5 60.0
6 70.0
【讨论】:
您描述了一个缺少值的序列。 fillna() 可以拍一个系列。因此最简单的是填充期望值。下面的代码演示了这一点:
import pandas as pd
import numpy as np
df = pd.DataFrame({"F_N":range(0,101,10)})
df.loc[np.random.choice(df.index,5)] = np.nan
df["fill"] = df["F_N"].fillna(pd.Series(range(0,101,10)))
| F_N | fill | |
|---|---|---|
| 0 | nan | 0 |
| 1 | 10 | 10 |
| 2 | 20 | 20 |
| 3 | 30 | 30 |
| 4 | nan | 40 |
| 5 | nan | 50 |
| 6 | 60 | 60 |
| 7 | 70 | 70 |
| 8 | nan | 80 |
| 9 | 90 | 90 |
| 10 | 100 | 100 |
【讨论】: