首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以csv格式显示Pandas DataFrame

以csv格式显示Pandas DataFrame
EN

Stack Overflow用户
提问于 2016-09-23 01:32:40
回答 1查看 273关注 0票数 1

我有一个熊猫数据帧q2,它看起来像这样:

代码语言:javascript
复制
    StudentID     Subjects
6         323      History
9         323      Physics
8         999    Chemistry
7         999      History
4         999      Physics
0        1234    Chemistry
5        2834      Physics
1        3455    Chemistry
2        3455      History
10       3455  Mathematics
3       56767  Mathematics

我想找出哪个学生选了哪些课程,并将其显示在屏幕上。

代码语言:javascript
复制
gb = q2.groupby(('StudentID'))
result = gb['Subjects'].unique()

c1=pd.DataFrame({'StudentID':result.index, 'Subjects':result.values})

c1看起来像这样

代码语言:javascript
复制
   StudentID                           Subjects
0        323                 [History, Physics]
1        999      [Chemistry, History, Physics]
2       1234                        [Chemistry]
3       2834                          [Physics]
4       3455  [Chemistry, History, Mathematics]
5      56767                      [Mathematics]

但是,期望的输出如下所示:

代码语言:javascript
复制
323: History, Physics
999: Chemistry, History, Physics
1234: Chemistry
2834: Physics
3455: Chemistry, History, Mathematics
56767: Mathematics

我能做什么?

EN

回答 1

Stack Overflow用户

发布于 2016-09-23 01:35:59

我认为你可以使用apply join函数。您还可以使用reset_index来创建DataFrame

代码语言:javascript
复制
gb = q2.groupby(('StudentID'))
result = gb['Subjects'].unique()

c1 = result.reset_index()

c1.Subjects = c1.Subjects.apply(', '.join)
print (c1)
   StudentID                         Subjects
0        323                 History, Physics
1        999      Chemistry, History, Physics
2       1234                        Chemistry
3       2834                          Physics
4       3455  Chemistry, History, Mathematics
5      56767                      Mathematics

最后,您可以将列StudentID转换为str (如果dtypeint)并合并在一起:

代码语言:javascript
复制
c1['new'] = c1.StudentID.astype(str) + ':' + c1.Subjects
print (c1)
   StudentID                         Subjects  \
0        323                 History, Physics   
1        999      Chemistry, History, Physics   
2       1234                        Chemistry   
3       2834                          Physics   
4       3455  Chemistry, History, Mathematics   
5      56767                      Mathematics   

                                    new  
0                  323:History, Physics  
1       999:Chemistry, History, Physics  
2                        1234:Chemistry  
3                          2834:Physics  
4  3455:Chemistry, History, Mathematics  
5                     56767:Mathematics  

另外,如果原始数据可以覆盖,请使用:

代码语言:javascript
复制
result = result.index.to_series().astype(str) + ':' + result.apply(', '.join)
print (result)
StudentID
323                      323:History, Physics
999           999:Chemistry, History, Physics
1234                           1234:Chemistry
2834                             2834:Physics
3455     3455:Chemistry, History, Mathematics
56767                       56767:Mathematics
dtype: object
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39645404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档