当前位置: 首页 > 知识库问答 >
问题:

Python-在group by之后将行转换为列,并为不匹配的行填充零

养焱
2023-03-14

我有一个需求,我需要将数据框列的行转换为列,但是我在GROUPBY之后面临一个问题。下面是一组3个用户,可以具有类型1到类型6之间的类型。

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个答案

丁震博
2023-03-14

您需要使用的是来自pandas的pivot_表。您可以指定所需的行和列,填充值说明如何处理空值和aggfunc len计数。

我不确定你的数据系列是什么样子,但你需要这样的东西:

pd.pivot_table(data, index='user_id', columns='type', aggfunc=len, fill_value=0)
 类似资料:
  • 问题内容: 我有以下Python pandas数据框: 我想要: 我看过pivot(),pivot_table(),Transpose和unstack(),它们似乎都没有给我。熊猫新手,所以所有帮助表示赞赏。 问题答案: 您需要通过转置: 如果需要重命名列,则有点复杂: 另一个更快的解决方案是使用: 时间 :

  • 我是数据科学的初学者,我正在尝试使用Pandas来旋转此数据框架: 所以它变成这样:(标签应该变成列,文件路径变成行。) “标签”列是一组或一类文件路径。我想把它转换成这样一种方式,它适合这个函数:tf。Keras.preprocessing.image.flow_from_dataframe 提前感谢所有帮助我的人。

  • 问题内容: __默认情况下,条件(x > 500)的 范围(1000) 显然是排序的。 我期待的数字0到999在一个被分组 的dict 由条件(X> 500)。但是结果字典只有999个 。其他数字在哪里?任何人都可以解释这里发生了什么吗? 问题答案: 从文档: 返回的组本身就是一个与共享底层可迭代对象的迭代器。因为源是共享的,所以当对象前进时,先前的组将不再可见。因此,如果以后需要该数据,则应将其

  • 问题内容: 将 变长 列表的Python序列隐式转换为NumPy数组会导致该数组属于 object 类型。 尝试强制使用其他类型将导致异常: 通过使用给定的占位符填充“缺失”值来获取类型为int32的密集NumPy数组的最有效方法是什么? 从我的示例序列中,如果占位符为0,我想得到类似的结果 问题答案: 您可以使用itertools.zip_longest: 注意:对于Python 2,它是ite

  • 问题内容: 我的数据集具有n个日期的位置信息。问题在于每个日期实际上是一个不同的列标题。例如,CSV看起来像 我想要的是它看起来像 问题是我不知道列中有多少个日期(尽管我知道它们总是以名字开头) 问题答案: 从v0.20开始,melt是一阶函数,你现在可以使用

  • 问题内容: 我有以下数据框: 我要这样 堆叠/堆叠似乎不起作用。 问题答案: 您正在寻找: 以及是否要重新排列列: