我有一个带有三列Dataframe
的store, hour, count
。我面临的问题是某些hours
缺少某些stores
,我希望它们成为0
。
这就是dataframe
的样子
# store_id hour count
# 0 13 0 56
# 1 13 1 78
# 2 13 2 53
# 3 23 13 14
# 4 23 14 13
如您所见,ID为13的
store
在3-23小时内没有值,与商店23类似,在其他许多小时中也没有值。我试图通过创建具有两列
id
和count
的时态数据框并执行right outer join
来解决此问题,但是没有用。 最佳答案
如果拼写错误且每个组的hour
中没有重复项,则解决方案为reindex
和MultiIndex.from_product
:
df = df.set_index(['store_id','hour'])
mux = pd.MultiIndex.from_product([df.index.levels[0], range(23)], names=df.index.names)
df = df.reindex(mux, fill_value=0).reset_index()
print (df)
store_id hour count
0 13 0 56
1 13 1 78
2 13 2 53
3 13 3 0
4 13 4 0
5 13 5 0
6 13 6 0
7 13 7 0
8 13 8 0
9 13 9 0
10 13 10 0
11 13 11 0
12 13 12 0
13 13 13 0
14 13 14 0
15 13 15 0
16 13 16 0
17 13 17 0
18 13 18 0
19 13 19 0
20 13 20 0
21 13 21 0
22 13 22 0
23 23 0 0
24 23 1 0
25 23 2 0
26 23 3 0
27 23 4 0
28 23 5 0
29 23 6 0
30 23 7 0
31 23 8 0
32 23 9 0
33 23 10 0
34 23 11 0
35 23 12 0
36 23 13 14
37 23 14 0
38 23 15 0
39 23 16 0
40 23 17 0
41 23 18 0
42 23 19 0
43 23 20 0
44 23 21 0
45 23 22 0
关于python - 如何按列将值添加到数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45151951/