我有一个数据框,其中有一天中的几个小时作为索引,每个小时都有一个值。像这样:
val
09 1
10 2
12 3
13 3
14 5
17 8
我想用一天中所有时间的值填充 df,因此它将从 00 开始一直到 23,然后用 0 填充它的值。
我想我可以在索引上循环并检查值是否存在或索引是否存在,如果不存在则添加它,但我不知道如何循环 DataFrame,我想有一种简单的方法可以完成我的任务想要。
请您参考如下方法:
您可以 reindex你的 df,这会将 NaN 放在行不存在的地方,但你可以提供 fill_value=0 来替换这些:
In [48]:
df.reindex(np.arange(24), fill_value=0)
Out[48]:
val
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 1
10 2
11 0
12 3
13 3
14 5
15 0
16 0
17 8
18 0
19 0
20 0
21 0
22 0
23 0
如果您的索引是string dtype,您需要先转换为int:
df.index = df.index.astype(int)
然后执行上述操作并向后转换并使用 str.zfill 向左填充所需数量的零:
In [49]:
df = df.reindex(np.arange(24), fill_value=0)
df.index = df.index.astype(str).str.zfill(2)
df
Out[49]:
val
00 0
01 0
02 0
03 0
04 0
05 0
06 0
07 0
08 0
09 1
10 2
11 0
12 3
13 3
14 5
15 0
16 0
17 8
18 0
19 0
20 0
21 0
22 0
23 0
