我的数据框包含一列ID和一列主题。最终,我想按主题对数据进行聚类,这样我就可以看到按所拍摄的主题聚类的ID组。
为此,我希望将数据帧作为每个ID的一行,最后每个主题的一列包含1或0值,以指示该主题是否被该行的ID占用。 / p>
输入示例:
ID Subject
John History
John English
Jane Maths
Jane Science
Jane History
Mark History
Mark Science
Mark Mathematics
预期输出:
Subject English History Mathematics Maths Science
ID
Jane 0 1 0 1 1
John 1 1 0 0 0
Mark 0 1 1 0 1
答案 0 :(得分:1)
您可以使用pivot_table()
执行以下操作Game
答案 1 :(得分:1)
您可以使用函数crosstab
:
pd.crosstab(df['ID'], df['Subject'])
输出:
Subject English History Mathematics Maths Science
ID
Jane 0 1 0 1 1
John 1 1 0 0 0
Mark 0 1 1 0 1
答案 2 :(得分:0)
您必须从"stacked" format to "pivot" format重塑数据框。 但是首先,您必须汇总数据。
尝试这样的事情:
agg_df = df.groupby(["ID", "Subject"]).count().reset_index(name="count")
agg_df.pivot(index='ID', columns='Subject', values='count')