[英]Fill columns with 0 in pivot table pandas
在其中一列中,如果缺少如何用 0 填充而不是将其留空?
雷:
df = pd.DataFrame({"day":[3, 3, 3, 3, 3, 3, 3],
"hour":[15, 15, 15, 15, 19, 20, 21],
"location":["A", "A", "B", "C", "D", "A", "B"],
"numbers": [323, 2354, 124, 56, 45, 11, 44]})
df.pivot_table(index="location",
columns=["day", "hour"],
values = "numbers",
fill_value=0,
aggfunc="count").unstack().to_frame()
哪些输出:
0
day hour location
A 2
B 1
15 C 0
D 0
A 0
B 0
19 C 0
D 1
A 1
B 0
3 20 C 0
D 0
等等.. 为了更好的可读性,我只是在两者之间留了空间。
如您所见,小时从 15 到 19。我想包括 hours= 16、17、18,其中所有位置和 0 列中的所有行都为 0。
所以期望的输出是:
0
day hour location
A 2
B 1
15 C 0
D 0
A 0
B 0
16 C 0
D 0
A 0
B 0
17 C 0
D 0
A 0
B 0
18 C 0
D 0
A 0
B 0
19 C 0
D 1
A 1
B 0
3 20 C 0
D 0
我怎样才能做到这一点? 提前致谢。
让我们添加reindex
与方法pd.MultIndex
创建使用from_product
独特阵列和时间范围。
df.pivot_table(index="location",
columns=["day", "hour"],
values = "numbers",
fill_value=0,
aggfunc="count").unstack().to_frame()\
.reindex(pd.MultiIndex.from_product([df['day'].unique(),
np.arange(df['hour'].min(),
df['hour'].max()),
df['location'].unique()]),
fill_value=0)
输出:
0
3 15 A 2
B 1
C 1
D 0
16 A 0
B 0
C 0
D 0
17 A 0
B 0
C 0
D 0
18 A 0
B 0
C 0
D 0
19 A 0
B 0
C 0
D 1
20 A 1
B 0
C 0
D 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.