我需要在数据框列中填充零,如标题所述。虽然可以使用iterrows()或itertuples()(执行时间相似)和一些条件语句来完成此操作,但我希望有更快的方法。
有一些连续的、相同的整数,它们之间有时候有一个或两个零。这些是我需要用它们之间的整数来填充的零。所有其他的零(不在非零整数之间的零,也可以说是连续两个以上的零)仍然保留为零。
期望输出应为:
有一些连续的、相同的整数,它们之间有时候有一个或两个零。这些是我需要用它们之间的整数来填充的零。所有其他的零(不在非零整数之间的零,也可以说是连续两个以上的零)仍然保留为零。
x = [[0,0,0,0,0,2,2,2,0,2,2,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0],
[0,0,0,0,3,3,0,0,3,3,3,3,0,0,0,0,0,2,2,2,0,2,2,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0]]
df = pd.DataFrame.from_records(x).T
df.columns = ['x', 'y', 'z']
x y z
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
4 0 3 0
5 2 3 0
6 2 0 0
7 2 0 0
8 0 3 0
9 2 3 1
10 2 3 1
11 0 3 1
12 0 0 0
13 0 0 0
14 0 0 1
15 0 0 1
16 0 0 1
17 0 2 0
18 0 2 1
19 1 2 1
20 1 0 1
21 1 2 0
22 0 2 0
23 0 0 0
24 1 0 0
25 1 0 0
26 0 0 0
27 0 0 0
28 0 0 0
29 0 0 0
期望输出应为:
x y z
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
4 0 3 0
5 2 3 0
6 2 3 0
7 2 3 0
8 2 3 0
9 2 3 1
10 2 3 1
11 0 3 1
12 0 0 1
13 0 0 1
14 0 0 1
15 0 0 1
16 0 0 1
17 0 2 1
18 0 2 1
19 1 2 1
20 1 2 1
21 1 2 0
22 1 2 0
23 1 0 0
24 1 0 0
25 1 0 0
26 0 0 0
27 0 0 0
28 0 0 0
29 0 0 0