当前位置: 首页 > news >正文

pandas一行拆成多行

import pandas as pd
df = pd.DataFrame({'Country':['China','US','Japan','EU','UK/Australia', 'UK/Netherland'],'Number':[100, 150, 120, 90, 30, 2],'Value': [1, 2, 3, 4, 5, 6],'label': list('abcdef')})# 法一 推荐
df2=df.drop('Country', axis=1).join(df['Country'].str.split('/', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))
df.drop('Country', axis=1).join(df['Country'].str.split('/', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))
print(df2)
#法二
tmp =df.set_index(["Number", "Value", "label"])["Country"].str.split("/", expand=True).stack()
result = tmp.reset_index(drop=True, level=-1).reset_index()
result = result.rename(columns={0: 'Country222222'})print(df)
print(result)

在这里插入图片描述

说明

  1. df.drop()通过指定标签名称和相应的轴,或直接给定索引或列名称来删除行或列,axis:轴的方向,0为行,1为列,默认为0
  2. stack()函数:“逆透视”就是将索引,特别是将列名转换为普通的列,方便后期计算,这个在excel里面叫做二维表转换为一维表。
    处理前
    step1
    重置索引
    两列组合做索引

3.pivot_table()透视

# 1. 单层统计 -- 根据名称分组统计不同颜色的数量总和
table = pd.pivot_table(df, values="数量", index="名称", columns="颜色", aggfunc=np.sum)
table2. fill_value参数:设定fill_value=0: 缺失值充填为0;marigins 参数:设定margins=True: 对行和列的数据进行统计输出
# 2. 单层统计 -- 根据名称分组统计不同颜色的数量平均值
table = pd.pivot_table(df, values="数量", index="名称", columns="颜色", aggfunc="mean", fill_value=0, margins=True)
table3. columns参数:传入列表,相当于同时对多个特征进行分类统计
# 3. 复合统计1 - 根据名称分组统计不同颜色和尺寸的数量总和
table = pd.pivot_table(df, values="数量", index="名称", columns=["颜色", "尺寸"], aggfunc="sum", fill_value=0,margins=True)
table4. index参数:传入一个列表,**就是相当于进行多层级的分组**
# 4. 复合统计2 - 根据名称和大小分组统计不同颜色的数量总和
table = pd.pivot_table(df, values="数量", index=["名称", "尺寸"], columns=["颜色"], aggfunc="sum", fill_value=0, margins=True)
table5. aggfunc参数: 聚合函数可以是函数,函数列表,字典。如果传递的是字典,则健为要聚合的列,值是函数或函数列表。聚合函数可包括:mean(平均值), sum(求和), max(最大值), min(最小值), size(计数), var(方差),std(标准差), median(中位数) 等。
# 5.复合统计3 - 根据名称统计不同颜色的数量总和,以及厚度的标准差
# 为方便演示,加入1新特征厚度值
df["厚度"] = [2, 5, 1, 2, 4, 5]
table = pd.pivot_table(df, values=["数量", "厚度"], index="名称", columns=["颜色"], aggfunc={"数量": np.sum, "厚度": np.std}, fill_value=0, margins=True)
table

处理前
处理后1 相当于分组
处理后

http://www.lryc.cn/news/501670.html

相关文章:

  • 今天调了个转速的小BUG
  • 第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】
  • 从一个Bug谈前端响应拦截器的应用
  • JS进阶DAY4|节点操作
  • 【Web】2023安洵杯第六届网络安全挑战赛 WP
  • go 语言中协程和GMP模型
  • coco数据集转换SAM2格式
  • 【CMD、PowerShell和Bash设置代理】
  • 22智能 代码作业集合
  • 实现一个简单的后台架子(侧边栏菜单渲染,折叠,黑白主题,组件主题色,全屏,路由快捷栏)
  • vue3-canvas实现在图片上框选标记(放大,缩小,移动,删除)
  • unity3d—demo(2d人物左右移动发射子弹)
  • 【ETCD】【源码阅读】 深入解析 raftNode.start`函数:Raft 核心启动逻辑剖析
  • Robust Depth Enhancement via Polarization Prompt Fusion Tuning
  • NEFTune,SFT训练阶段给Embedding加噪音
  • uniapp -- 实现页面滚动触底加载数据
  • L22.【LeetCode笔记】相交链表(新版)
  • 智能时代网络空间认知安全新观察
  • 游戏如何应对模拟器作弊
  • c++ 判断一个 IP 地址(可能是 IPv6 或 IPv4)是否属于特定范围
  • 计算机视觉——相机标定(Camera Calibration)
  • 【qt环境配置】windows下的qt与vs工具集安装\版本对应关系
  • GitHub使用
  • 元宇宙时代的社交平台:Facebook的愿景与实践
  • vue2中各种钩子函数的总结以及使用场景
  • 软件架构:从传统单体到现代微服务的技术演变
  • git新建远程分支后,无法切换
  • 【SpringBoot】31 Session + Redis 实战
  • 在Windows环境下的rknn-toolkit环境搭建
  • Facebook广告突然无消耗?原因解析与解决方案。