Python 将与不同值关联的重复条目转换为具有这些值列表的一个条目?
我不知道如何命名这个 假设以下数据帧:Python 将与不同值关联的重复条目转换为具有这些值列表的一个条目?,python,pandas,Python,Pandas,我不知道如何命名这个 假设以下数据帧: 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 Trigonomet
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"]
我使用的是一个大型数据帧,它的组织方式没有这个示例那么好。非常感谢您的帮助。您需要打开学生
和ID
,然后使用
输出:
Student ID Class
0 Alex 80045 [Trigonometry, Economics, French]
1 John 99124 [Biology, History, Geometry]
2 Sarah 74323 [Physics, Geography, Algebra]
让我们看看,需要一些帮助 你可以这样写
df= df.groupby('student').agg({'id':'max', 'Class': lambda x: x.tolist()})
希望有帮助,朱利奥试试下面的方法
df.groupby(['Student', 'ID'],as_index=False).agg(lambda x:','.join('"'+x+'"'))
我不确定列表是否真的是理想的解决方案。将对象存储在数据帧中只会给未来的大多数操作带来障碍。例如,检查哪些学生学过
生物学
,或者至少在没有一种性能差得多的方法的情况下,这不再是一件小事了。@Alolz你推荐一种替代方法吗?这取决于你最终需要什么样的操作。拥有一个长格式,其中每一行都是一个唯一的键(如上所述),这可能是有用的,而且是灵活的。不难转动轴,或者从那里得到假人,这可能更适合做其他事情。对我来说很有用,谢谢你快速准确的回答。
df= df.groupby('student').agg({'id':'max', 'Class': lambda x: x.tolist()})
df.groupby(['Student', 'ID'],as_index=False).agg(lambda x:','.join('"'+x+'"'))