Python Pandas按多个枢纽计数枢纽分组

时间:2019-08-15 15:39:02

标签: python pandas pivot-table pandas-groupby

将标题指定为TimStamp,性别和种族, 我想通过时间戳记来区分性别和种族组。给定性别= M / F种族= A / B / C / D / E。

种族= E可能不存在于数据集中,但可以通过种族E预测数据。 因此,占位符很重要,值为零。

数据和输出示例如下所示。

  

时间戳   12:30   12:30   12:30   12:30   12:31,   12:31,   12:32

     

性别=   M   F,   F,   F,   M   F,   M

     

种族=   一种,   一种,   B,   B,   C,   一种,   D

     

enter code here

enter image description here

1 个答案:

答案 0 :(得分:2)

您将需要为此创建两个数据透视表:

要获得具有Race中所有指定类别的表,您需要将Race转换为分类变量:

df["Race"] = pd.Categorical(df.Race, categories=["A", "B", "C", "D", "E"])

性别:

 df_g =  df.groupby(["Time_stamp", "Gender"], observed=False).count().fillna(0).unstack() 

对于种族:

df_r = (df.groupby(["Time_stamp", "Race"], observed=False)
        .count().fillna(0).reset_index()
        .astype({"Race": str}).pivot_table(index="Time_stamp", columns="Race"))

然后您可以加入他们:

df_report = df_r.join(df_g)  
df_report.columns = df_report.columns.droplevel()