[英]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.