Python Pandas Group by Count Pivot of multiple columns
Posted
技术标签:
【中文标题】Python Pandas Group by Count Pivot of multiple columns【英文标题】:Python Pandas Group by Count Pivot of multiple colunms 【发布时间】:2019-12-22 01:09:50 【问题描述】:给定标题为 TimStamp、性别和种族, 我想按时间戳计算性别和种族组的计数。给定性别 = M/F 种族 = A/B/C/D/E。
Race = E 可能不存在于数据集中,但预计数据与 Race E。 因此,占位符的重要性为零。
数据和输出示例如下所示。
时间戳 12:30, 12:30, 12:30, 12:30, 12:31, 12:31, 12:32,
性别 = 米, F, F, F, 米, F, M
种族 = 一种, 一种, 乙, 乙, C, 一种, D
【问题讨论】:
【参考方案1】:您需要为此做两个数据透视表:
要实现一个包含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()
【讨论】:
我喜欢你的回答,正如我们看到的描述,我们需要一个 Col E,这在我们得到的 DataSet 中没有给出。我很抱歉没有强调这一点。任何方式,非常感谢您的回答,希望您的回答可以按照粗体注释进行完善。 Race = E 可能不存在于数据集中,但预期具有 Race E 的数据。因此,Place Holder 很重要,值为 0。所以我们需要将 Race = A/B/C/D/E 放在最前面。 酷!没问题:D。我修好了它。现在您应该看到所有列。如果我设法帮助你,请考虑选择我的答案作为接受的答案:D以上是关于Python Pandas Group by Count Pivot of multiple columns的主要内容,如果未能解决你的问题,请参考以下文章
Python,在 Pandas DataFrame 的“group concat”中使用“order by”
sql select group by a count(1) > 1 在python pandas中等效?
Python Pandas Group by Count Pivot of multiple columns