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

将与不同值关联的重复条目转换为具有这些值列表的一个条目?[副本]

闾丘才哲
2023-03-14

我不知道如何命名这个。

假设以下数据帧:

    Student ID      Class   
1   John    99124   Biology
2   John    99124   History
3   John    99124   Geometry
4   Sarah   74323   Physics
5   Sarah   74323   Geography
6   Sarah   74323   Algebra
7   Alex    80045   Trigonometry
8   Alex    80045   Economics
9   Alex    80045   French

我希望通过创建每个学生正在学习的课程列表,然后将其放入“类”列,来减少此数据框中的行数。这是我想要的输出:

    Student ID      Class
1   John    99124   ["Biology","History","Geometry"]
2   Sarah   74323   ["Physics","Geography","Algebra"]
3   Alex    80045   ["Trigonometry","Economics","French"]

我使用的是一个大型数据帧,它的组织方式没有这个示例那么好。感谢您的帮助。

共有3个答案

谷梁博易
2023-03-14

让我们看看,使用一些帮助将多个函数应用于多个groupby列

你可以这样写

df= df.groupby('student').agg({'id':'max', 'Class': lambda x: x.tolist()})

希望有帮助,朱利奥

张兴旺
2023-03-14
df.groupby('ID')['Class'].apply(list)
茹元魁
2023-03-14

您需要在StudentIDgroupby,然后使用agg

df.groupby(['Student', 'ID'], as_index=False).agg({'Class': list})

输出:

  Student     ID                              Class
0    Alex  80045  [Trigonometry, Economics, French]
1    John  99124       [Biology, History, Geometry]
2   Sarah  74323      [Physics, Geography, Algebra]
 类似资料:
  • 问题内容: 我想将 每个地图条目转换为-列表中的1个条目作为“键-值” 我搜索了,只发现将值仅映射到List。 我希望将此映射到列表为 等等。 如果我使用foreach,可以很容易地做到这一点,但是我想知道通过流获取它是否可行 问题答案:

  • 问题内容: 我有一个按名称列出的客户表:在SQL中,其中有3列:, 此表中有重复的条目,但 时间戳记 不同。 例如 我想从数据库中消除此问题,并保持第一时间/日期可用。 谢谢。 问题答案: 这有效,请尝试: 在子查询中,它确定哪个记录是每个的第一个记录,然后删除所有其他记录以作重复。我还添加了该子句,该子句返回受该语句影响的行。 您也可以通过使用排名功能来做到这一点: 看看哪一个查询开销较小并使用

  • 问题内容: 我有一张表格,其中每一行都是以下形式: 凡我查询寻找的价值配对,使用。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效: 这样,我这次使用=运算符查询了值b。 值得注意的是,我感兴趣的用例当前有大约10,000行,其中每个“列表”元素平均有8个条目。我同时标记了两者,因为使用和的数据库都存在类似的问题。 问题答案: 我的查询在其中使用LIKE寻找一对值,%b%。就查询时间

  • 我有一个清单如下: 我想做的是遍历mylist并生成如下所示的新列表: 换句话说,制作一个列表列表,其中每个列表包含初始列表条目的唯一组合,这样一个字母在结果列表的每个条目中不会出现两次。而且,每次将一个条目添加到result中时,我们都从初始列表的可用组合集合中抽象出它的子元素。(我猜给出的例子比解释更清楚)。

  • 如果值之一为则抛出。我不理解这种行为,映射可以包含空指针作为值没有任何问题。的值不能为null有什么好的原因吗? 还有,是否有一个很好的Java 8方法来修复这个问题,或者我应该恢复到普通的老for循环? 我的问题的一个例子: 堆栈跟踪: Java 11号还存在这个问题。

  • 问题内容: 我有两张桌子。表和表。两者都有多对多的关系。 表A: 表B: 表AB: 我想要得到的名单,从表S =该有关系 的名单表第。 上表中的示例: 我想所有这些都表的关系小号 1和2,我得到那么3具有这两个表第。 如何使用SQL查询做到这一点? 问题答案: 如果要基于“不作为”列表(而不是“全部”作为)进行选择,请按照以下步骤操作: 用您的列表替换,并在having子句中替换为列表项的数量。