Python - 在分组后将行转换为列,并为非匹配行填充零

时间:2017-04-02 12:46:47

标签: python python-3.x pandas sklearn-pandas

我有一个要求,我需要将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.

非常感谢你的时间。

1 个答案:

答案 0 :(得分:1)

您需要使用的是来自pandas的pivot_table。您可以指定所需的行和列,fill_value说明您要对空值和aggfunc len计数做什么。

我不确定你的DataSeries是什么样的,但你需要这样:

pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0)