[英]Make pandas.pivot_table observed=False create missing columns
因此,假設將參數 Observed=False 傳遞給 pandas.pivot_table 時應該創建缺失的列,但事實並非如此。
在我的示例中,我有一個分類列“小時”,即使輸入數據沒有所有小時,我也想獲得整個 24 列。
import pandas as pd
df = pd.DataFrame([["user_1", 23],
["user_1", 22],
["user_2", 21]],
columns=["user", "hour"]).set_index("user")
df["hour"] = pd.Categorical.from_codes(df["hour"], categories=range(24))
df = df.assign(count=True)
df.pivot_table(columns="time",
index="user",
values="count",
fill_value=False,
observed=False,
)
我得到的輸出:
22 23
user
user_1 True True
user_2 True False
預期輸出:
0 ... 22 23
user
user_1 False ... True True
user_2 False ... True False
您可以跳過Categorical
並在樞軸后對axis=1
進行reindex
:
df.pivot_table(columns="hour",
index="user",
values="count",
fill_value=False,
observed=False,
).reindex(range(24), axis=1, fill_value=False)
hour 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
user
user_1 False False False False False False False False False False False False False False False False False False False False False False True True
user_2 False False False False False False False False False False False False False False False False False False False False False True False False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.