我有一个要求,我需要将dataframe列的行转换为列,但是我在GROUPBY之后遇到问题。 下面是一组3个用户,可以在type1到type6之间使用类型。
user_id1 type4
user_id1 type6
user_id1 type1
user_id1 type2
user_id1 type1
user_id1 type6
user_id2 type1
user_id2 type2
user_id2 type2
user_id2 type1
user_id2 type3
user_id2 type4
user_id2 type5
user_id2 type6
user_id2 type2
user_id2 type6
user_id3 type1
user_id3 type2
user_id3 type3
user_id3 type2
我期待的输出是 -
user_id type1 type2 type3 type4 type5 type6
user_id1 2 1 0 1 0 2
user_id2 2 3 1 1 1 2
user_id3 1 2 1 0 0 0
我尝试对类型进行分组并获得计数。但不确定如何转换为列,尤其是缺少的类型应填充为0.
非常感谢你的时间。
答案 0 :(得分:1)
您需要使用的是来自pandas的pivot_table。您可以指定所需的行和列,fill_value说明您要对空值和aggfunc len计数做什么。
我不确定你的DataSeries是什么样的,但你需要这样:
pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0)