Python - 在分组依据之后将行转换为列,并为不匹配的行填充零
Python - convert rows to columns after group by and populate zeroes for non matching rows
我有一个要求,我需要将数据框列的行转换为列,但是我在 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
我尝试对类型进行分组并得到 count.But 不确定如何转换为列,尤其是缺少的类型应该用 0 填充。
非常感谢您的宝贵时间。
您需要使用的是 pandas 中的 pivot_table。您可以指定所需的行和列,fill_value 说明您想对空值和 aggfunc len 计数执行的操作。
我不确定您的 DataSeries 是什么样子,但您需要这样的东西:
pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0)
我有一个要求,我需要将数据框列的行转换为列,但是我在 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
我尝试对类型进行分组并得到 count.But 不确定如何转换为列,尤其是缺少的类型应该用 0 填充。
非常感谢您的宝贵时间。
您需要使用的是 pandas 中的 pivot_table。您可以指定所需的行和列,fill_value 说明您想对空值和 aggfunc len 计数执行的操作。
我不确定您的 DataSeries 是什么样子,但您需要这样的东西:
pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0)