如下代码,亲测有效,后面会附上入口以及出口数据结构截图

def test_func(file_path):
"""
把pandas数据结构-dataframe,横向的索引,转成纵向的
:return:
"""
pd_obj = pandas.read_excel(file_path, engine="openpyxl")
groupby_df = pd_obj.groupby(["任务状态", "团队名称"]).agg(
{"团队名称": "count"}
)
# 拿到分组后,第一层数据,团队名称字典下面的value
sys_team = groupby_df.get("团队名称")
# 二次分组,拿到每个任务状态下的所有团队名称数据
sys_team_type_df = sys_team.groupby("任务状态")
li = []
for name, group_ in sys_team_type_df:
# 拿到每个分组的数据,每个分组就是每个任务状态下的所有团队名称数据
each_group_dic = {"team": [], }
# 拿到每个分组的索引list,每个list里面是一个个tuple,
# 每个tuple---('In Review', 'A团队')
each_group_index_li = group_.index
type_li = []
for each_index_row in each_group_index_li:
# 拿到每个tuple中,任务状态值以及团队名称值
current_team_value = each_index_row[-1]
current_type_value = each_index_row[0]
# 把每个group里面的团队名称,按照顺序,添加到字典的team里面
each_group_dic["team"].append(current_team_value)
# 把每个分组中的具体count值,提取出来,根据二维索引提取,
# 二维索引就是任务状态索引和团队名称索引
type_team_matched_value = group_.loc[current_type_value, current_team_value]
# 把每个分组中提取出来的具体的count值,存入一个type-list
type_li.append(type_team_matched_value)
# 把type-list,作为一组键值对:key是团队名称,value是该团队对应的count值,
# update到上面构件的each_group_dic字典中,
each_group_dic.update({current_type_value: type_li})
# 把构件完成的each_group_dic字典,转成dataframe数据结构
each_group_df = pandas.DataFrame(each_group_dic)
# 把每个分组构件完成的dataframe,存入一个list中
li.append(each_group_df)
# 最后把最外层的list里面的所有dataframe拼接起来,得到转换成功的数据结构
merge_test_df = reduce(
lambda left, right: pandas.merge(left, right, on="team", how="outer"),
li)
# 把dataframe的空值都填充为0
df_ = merge_test_df.fillna(0)
# 拿到所有应该要转换成数字的列名
integer_cols = merge_test_df.columns[1:]
for each_col in integer_cols:
# 把所有float类型的列,都转换成数字
df_[each_col] = pandas.to_numeric(df_[each_col], downcast='integer')
return df_

输入的文件结构如下截图:

输出的结构截图:

pandas-数据结构转换-纵转横的更多相关文章

  1. pandas教程1:pandas数据结构入门

    pandas是一个用于进行python科学计算的常用库,包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单.pandas建造在NumPy之上,它使得以NumPy为中心的应用很容 ...

  2. Pandas数据结构

    Pandas处理以下三个数据结构 - 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构构建在Numpy数组之上,这意味着它们很快. 维数和描述 考虑这些数据结构的最 ...

  3. python之pandas学习笔记-pandas数据结构

    pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...

  4. typescript 深层次对象内层(N)转外层(N),支持多层级递归转换,多应用于多语言数据结构转换

    如下数据结构转换 var a = { b: { en: 1, zh: 2, }, c: { en: 3, zh: 4, }, } //===> var b = { en: { b: 1, c: ...

  5. 读书笔记一、pandas数据结构介绍

    pandas数据结构介绍 主要两种数据结构:Series和DataFrame.   Series   Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)+数据标签(即索引)组 ...

  6. 初探pandas——安装和了解pandas数据结构

    安装pandas 通过python pip安装pandas pip install pandas pandas数据结构 pandas常用数据结构包括:Series和DataFrame Series S ...

  7. 03. Pandas数据结构

    03. Pandas数据结构 Series DataFrame 从DataFrame中查询出Series 1. Series Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一 ...

  8. pandas 数据结构基础与转换

    pandas 最常用的三种基本数据结构: 1.dataFrame: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Data ...

  9. pandas.DataFrame.astype数据结构转换

    网易云课堂该课程链接地址 https://study.163.com/course/courseMain.htm?share=2&shareId=400000000398149&cou ...

  10. pandas 学习(2): pandas 数据结构之DataFrame

    DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型.在其底层是通过二维以及一维的数据块实现. 1.  ...

随机推荐

  1. Linux基础介绍

    Linux基础介绍 一.运维的本质 运维:运行维护应用程序 岗位需求:自动化运维.DBA.docker+K8s 运维的本质: 1.尽可能保证应用程序24小时不间断运行 2.尽可能保证数据的安全 3.尽 ...

  2. Array list练习

    Array list练习 数据添加到集合 生成6个1~33之间的随机整数,添加到集合,并遍历 public class Test01ArrayList { public static void mai ...

  3. dapr入门与本地托管模式尝试

    1 简介 Dapr是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr支持的语言 ...

  4. 普冉PY32系列(五) 使用JLink RTT代替串口输出日志

    目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...

  5. python新冠疫情分析-世界疫情数据爬取

    事情发展:1.毕业设计是关于疫情数据的可视化展示(基于java,需要做数据可视化,需要做管理员端对数据进行增删改查处理)2.飞起来速度学爬虫,参考了非常多资料,比如b站的黑马爬取(报错,就是在切片那里 ...

  6. 懂九转大肠的微软New Bing 内测申请教程

    最近微软的New Bing开放内测了,网上已经有拿到内测资格的大佬们对比了ChatGPT和New Bing.对比结果是New Bing比ChatGPT更强大.来看看具体对比例子吧 1.时效性更强 Ch ...

  7. SQL 实现全字段分组,每组取一条记录,记录满足:组内时间最大,组内不同类型数量求和

    1 SELECT 2 TT.CLASS_ID AS "classId", 3 TT.TEMPLATE_ID AS "templateId" , 4 TT.MSG ...

  8. 【ASP.NET Core】标记帮助器——抽象层

    标记帮助器,即 Tag Helpers.这个嘛,就直接翻译了,叫"标记帮助器",虽然不好听,但只能这样了.当然你翻译为"标记增强器"也行. 所谓标记帮助器,就是 ...

  9. JavaScript的闭包和作用域

    作用域相关 作用域的概念: 作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性.换句话说,作用域决定了代码区块中变量和其他资源的可见性: 作用域的类型: 全局作用域: 最外层函数和在最外 ...

  10. 安卓逆向 利用JEB进行动态调试断点 进行内购

    1.第一步肯定是需要配置好,连接到模拟器 2.这个程序会弹出支付失败 所以我们搜索一下关键字 看到这里就很兴奋了 我们取JEB里面对这个方法进行断点 if eqz 等于0 这里 看到那个寄存器是v5 ...