【发布时间】:2020-11-06 10:36:34
【问题描述】:
我有以下数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.nan, index=range(1,16), columns=['A','B','C','D','E','F','G','H'])
a = [1550, 41, 9.41, 22.6, 4.74, 3.2, 11.64, 2.23]
b = [1540, 43, 9.41, 22.3, 4.84, 3.12, 11.64, 2.23]
c = [1590, 39, 9.41, 23.7, 4.74, 3.0, 11.64, 2.23]
d = [1540, 41, 9.41, 22.5, 4.74, 3.2, 11.64, 2.23]
df.loc[[1,8,13,15],:] = [a,b,c,d]
看起来像这样:
A B C D E F G H
1 1550.0 41.0 9.41 22.6 4.74 3.20 11.64 2.23
2 NaN NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN NaN
7 NaN NaN NaN NaN NaN NaN NaN NaN
8 1540.0 43.0 9.41 22.3 4.84 3.12 11.64 2.23
9 NaN NaN NaN NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN NaN NaN NaN
11 NaN NaN NaN NaN NaN NaN NaN NaN
12 NaN NaN NaN NaN NaN NaN NaN NaN
13 1590.0 39.0 9.41 23.7 4.74 3.00 11.64 2.23
14 NaN NaN NaN NaN NaN NaN NaN NaN
15 1540.0 41.0 9.41 22.5 4.74 3.20 11.64 2.23
我希望填充空值: “平均值(null 之前的所有前面的值,null 之后的第一个非 null 后续值)” 注意:如果 null 之后的第一个后续值也为 Null,则代码应查找第一个不为 null 的后续值。
示例: A 列的第 2 行应填写 Average(1550,1540) = 1545
这里“null 之前的所有先前值”= 1550,“null 之后的第一个非 null 后续值”= 1540
同样, A 列的第 3 行应填入 Average(1550,1545,1540) = 1545
这里在null之前的所有值都是1550和1545(1545是我们在上面的步骤中找到的)
null 之后的第一个非 null 后继值又是 1540。
这样下去,A列的第9行应该填满
平均(null 之前的所有值,1590)1590 现在是 null 之后的第一个非 null 后续值。
所以最后我想要的 A 列输出如下所示:
Desired Output Example for A column:
Row A
1 1550
2 1545
3 1545
4 1545
5 1545
6 1545
7 1545
8 1540
9 1550
10 1550
11 1550
12 1550
13 1590
14 1549.285
15 1540
同样,我也希望为所有其他列填充我的空值。 由于我是 python 新手,我不知道如何为此编写代码。
非常感谢您对代码的任何帮助。
【问题讨论】:
-
您能分享您在其中声明数据框的代码吗?
-
@Anton 代码已共享。
标签: python python-3.x pandas python-2.7 dataframe