首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用熊猫根据给定的时间表创建每个主题的频次表?

如何使用熊猫根据给定的时间表创建每个主题的频次表?
EN

Stack Overflow用户
提问于 2022-03-05 15:08:15
回答 1查看 72关注 0票数 1

这是一个时刻表,columns=hour,rows=weekday,data=subject工作日x小时

代码语言:javascript
运行
复制
                               1                      2                 3             4                 5                      6                      7
Name                                                                                                                                                   
Monday                   Project                Project           Project  Data Science  Embedded Systems            Data Mining  Industrial Psychology
Tuesday                  Project                Project           Project       Project      Data Science  Industrial Psychology       Embedded Systems
Wednesday           Data Science                Project           Project       Project           Project                Project                Project
Thursday             Data Mining  Industrial Psychology  Embedded Systems   Data Mining           Project                Project                Project
Friday     Industrial Psychology       Embedded Systems      Data Science   Data Mining           Project                Project                Project

如何在相应的工作日生成pandas.Dataframe where,rows=weekday,columns=subject,data = subject频率?

所需表格:平日x主题

代码语言:javascript
运行
复制
              Data Mining, Data Science, Embedded Systems, Industrial Psychology, Project                                                             
Name                                                                                                                                                   
Monday           1          1            1                 1                      3
Tuesday          ...         
Wednesday                     
Thursday                                     
Friday                               
代码语言:javascript
运行
复制
        self.file = 'timetable.csv'
        self.sdf = pd.read_csv(self.file, header=0, index_col="Name")
        print(self.sdf.to_string())
        self.subject_frequency = self.sdf.apply(pd.value_counts)
        print(self.subject_frequency.to_string())
        self.subject_frequency["sum"] = self.subject_frequency.sum(axis=1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-05 15:59:40

使用melt将数据拉平,然后使用pivot_table重塑数据:

代码语言:javascript
运行
复制
out = (
  df.melt(var_name='Freq', value_name='Data', ignore_index=False).assign(variable=1)
    .pivot_table('Freq', 'Name', 'Data', fill_value=0, aggfunc='count')
    .loc[df.index]  # sort by original index: Monday > Thuesday > ...
)

输出:

代码语言:javascript
运行
复制
>>> out
Data       Data Mining  Data Science  Embedded Systems  Industrial Psychology  Project
Name                                                                                  
Monday               1             1                 1                      1        3
Tuesday              0             1                 1                      1        4
Wednesday            0             1                 0                      0        6
Thursday             2             0                 1                      1        3
Friday               1             1                 1                      1        3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71363338

复制
相关文章

相似问题

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