簡體   English   中英

使 pandas.pivot_table 觀察=假創建缺失的列

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM