pandas-数据结构转换-纵转横
如下代码,亲测有效,后面会附上入口以及出口数据结构截图
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-数据结构转换-纵转横的更多相关文章
- pandas教程1:pandas数据结构入门
pandas是一个用于进行python科学计算的常用库,包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单.pandas建造在NumPy之上,它使得以NumPy为中心的应用很容 ...
- Pandas数据结构
Pandas处理以下三个数据结构 - 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构构建在Numpy数组之上,这意味着它们很快. 维数和描述 考虑这些数据结构的最 ...
- python之pandas学习笔记-pandas数据结构
pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...
- typescript 深层次对象内层(N)转外层(N),支持多层级递归转换,多应用于多语言数据结构转换
如下数据结构转换 var a = { b: { en: 1, zh: 2, }, c: { en: 3, zh: 4, }, } //===> var b = { en: { b: 1, c: ...
- 读书笔记一、pandas数据结构介绍
pandas数据结构介绍 主要两种数据结构:Series和DataFrame. Series Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)+数据标签(即索引)组 ...
- 初探pandas——安装和了解pandas数据结构
安装pandas 通过python pip安装pandas pip install pandas pandas数据结构 pandas常用数据结构包括:Series和DataFrame Series S ...
- 03. Pandas数据结构
03. Pandas数据结构 Series DataFrame 从DataFrame中查询出Series 1. Series Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一 ...
- pandas 数据结构基础与转换
pandas 最常用的三种基本数据结构: 1.dataFrame: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Data ...
- pandas.DataFrame.astype数据结构转换
网易云课堂该课程链接地址 https://study.163.com/course/courseMain.htm?share=2&shareId=400000000398149&cou ...
- pandas 学习(2): pandas 数据结构之DataFrame
DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型.在其底层是通过二维以及一维的数据块实现. 1. ...
随机推荐
- 公司规定所有接口都用 post 请求,这正确么?
目录 背景 get 与 post 的区别 所有接口都用 post 请求? 背景 最近在逛知乎的时候发现一个有趣的问题:公司规定所有接口都用 post 请求,这是为什么? 看到这个问题的时候其实我也挺有 ...
- inline的作用
1:inline可以跳过调用,直接引用,类似与直接将函数中的代码拿到当前函数中一样 2:在.h中函数重复的时候可以用inline来解决冲突问题
- 【Django drf】视图层大总结 ViewSetMixin源码分析 路由系统 action装饰器
目录 九个视图子类 视图集 继承ModelViewSet类写五个接口 继承 ReadOnlyModelView编写2个只读接口 ViewSetMixin源码分析 查找as_view方法 setattr ...
- Dijkstra求最短路 I(朴素算法)
这道题目又是一个新算法,名叫Dijkstra 主要思路是:输入+dist和vis初始化(都初始化为0x3f)+输入g(邻接矩阵)+Dijkstra函数 Dijkstra函数:先将dist[ ...
- 构建api gateway之 如何给openresty打patch
如何给openresty打patch 由于很多功能实现的限制,我们不得不修改openresty,但我们又不一定能持续维护一个 openresty 分支,所有有了patch 这一操作. patch是怎么 ...
- 题解 Trie 但是你要最小化它的节点数量
名字瞎取的 Description 给定 \(n\) 个字符串 \(s\),可以对 \(s_i\) 的字符打乱,将这些字符串加入一个 trie 里面求节点数量最小值. \(n\le 16, \sum ...
- wpf 样式style封装以及点击按钮打开新窗口
在页面引用: ok~ 点击按钮打开新窗口: 1.点击按钮 点击工具栏的这个小闪电 2.双击click后的灰框或者输入点击事件名称 3.这里是打开window1窗口 ok~
- CPU持续100%分析并解决
背景 接到客户电话,说某系统数据库服务器CPU利用率从上午8点开始到现在基本上都是100%的情况,影响到了业务.让给看看是什么原因导致的,怎么紧急处理一下. 现象 查看CPU利用率,确实一直是90%以 ...
- Xilinx URAM使用说明 UG573
UltraRAM Resources UltraRAM Summary UltraRAM 是单时钟.双端口.同步存储器,可用于 UltraScale+ 器件.由于 UltraRAM 与柱状(colum ...
- wps二次开发
JSAPI概述及原理 : [金山文档]JSAPI概述及原理 https://kdocs.cn/l/skWT29577eEE JSAPI集成开发文档 [金山文档]JSAPI集成开发文档 https:// ...