gpt4 book ai didi

python - 在数据透视表 Pandas 中用 0 填充列

转载 作者:行者123 更新时间:2023-12-04 10:24:10 25 4
gpt4 key购买 nike

在其中一列中,如果缺少如何用 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

关于python - 在数据透视表 Pandas 中用 0 填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60699379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com