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. ...
随机推荐
- 第一个C程序
写C代码 创建工作区 创建工程 创建文件(.c源文件..h头文件) main函数是程序执行的入口,有且只有一个 函数printf(print function打印函数)[库函数-C语言本身提供给我们使 ...
- KEIL5、STM32CubeMX、STM32CubeIDE 下载、安装
一.资源下载 Keil5下载链接: https://www.keil.com/download/product/ STM32 标准库芯片包下载链接: https://www.keil.com/dd2/ ...
- 云服务器安装Mysql之后,设置可以进行远程连接,Duplicaticate wntry '%-root' for key 'PRIMARY
云服务器安装Mysql之后,设置可以进行远程连接 1.首先连接mysql mysql -u root -p 2.MySql5版本 GRANT ALL ON *.* TO root@'%' IDENTI ...
- DJI Flight Simulator 无人机模拟器 功能介绍与使用说明
0 前言 无人机是当前非常火热的"相机设备",而大疆又是其中翘楚,功能丰富,可以说是一个将带着云台的智能手机放到了天空中.如果你有自己玩过旋翼无人机航模的话,可能会体会到大疆的另一 ...
- drf-day6——九个视图子类、视图集、路由系统、认证组件
目录 一.九个视图子类 二.视图集 2.1 通过ModelViewSet编写5个接口 2.2 通过ReadOnlyModelViewSet编写2个只读接口 2.3 ViewSetMixin源码分析 总 ...
- appium如何获取到APP的启动activity
方法一: adb shell monkey -p 包名 -v -v -v 1 方法二: aapt dump bading apk所在路径\apk名字(或者直接把apk拖进命令行) 运行后的结果中以下两 ...
- P21_事件传参与数据同步
事件绑定 在事件处理函数中为 data 中的数据赋值 通过调用 this.setData(dataObject) 方法,可以给页面 data 中的数据重新赋值,示例如下: 事件传参 小程序中的事件传参 ...
- 学习java Day1
今天正式开始自学Java,首先在官网安装了最新版的jdk并配置好了环境,随后安装好了eclipse. 使用eclipse运行了一个基础的aa.java文件,并成功打印出hello world 首先我了 ...
- ES6的Promise用法
一.是什么: promise是异步编程的一种解决方案,它是一个对象,可以获取异步操作的信息,它的出现改善了异步编程,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大 二.promise的 ...
- 滴水 1.c++类 this指针 笔记+指针
1.结构体带参数传递 将结构体的数据压入堆栈中 然后进入函数内进行处理 2.结构体指针传递 将this指针压入进去 来查找 a b数据 3.函数可以放在结构体里面,也可以放在结构体外面 放入进去后 但 ...