美图欣赏2022/07/16

在最近的需求开发中,针对原有逻辑进行开发,导出的Excel数据如下所示:

提示: 以上数据仅为Demo数据,其中site和material分组后,如果两者数值分为同一组别,字段'Balance_from_Q2'数值是相同的,不存在数值不相等的情况

问题: 客户对字段'Balance_from_Q2'数据显示提出要求,根据字段'site'和'material'分组,只对分组后第一行显示数据,其余的行设置为空(NaN),Excel呈现需求结果图如下所示:

数据源

import pandas as pddf = pd.DataFrame({'site':['FOC', 'FOC', 'FOC', 'FOC', 'FOC','FOC','FOC','FOC','FOC'],'material':['01-0319-00','01-0319-00','03-0060-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00'],'Balance_from_Q2':[437,437,0,123,123,123,123,123,123]})

df 

方法1

import pandas as pd
import numpy as npdf = pd.DataFrame({'site':['FOC', 'FOC', 'FOC', 'FOC', 'FOC','FOC','FOC','FOC','FOC'],'material':['01-0319-00','01-0319-00','03-0060-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00'],'Balance_from_Q2':[437,437,0,123,123,123,123,123,123]})
# 方法1
data = df.groupby(['site','material']).head(1)
df['Balance_from_Q2'] = np.nan
df['Balance_from_Q2'] = data.loc[data.index,'Balance_from_Q2']

思路

1.根据字段'site'和'material'进行分组,获取相同分组数值的第一行记录

data = df.groupby(['site','material']).head(1)

2.将df表中字段'Balance_from_Q2'设置为空

import numpy as np
df['Balance_from_Q2'] = np.nan

3.利用按轴标签.loc将data表中记录数据中的'Balance_from_Q2'数值重新赋值到df表中

方法2 

import pandas as pd
import numpy as npdf = pd.DataFrame({'site':['FOC', 'FOC', 'FOC', 'FOC', 'FOC','FOC','FOC','FOC','FOC'],'material':['01-0319-00','01-0319-00','03-0060-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00','09-0334-00'],'Balance_from_Q2':[437,437,0,123,123,123,123,123,123]})# 方法2
# 新增ranking字段
df['ranking'] = df.groupby(['site','material'])['Balance_from_Q2'].rank(ascending=1,method='first').astype(int)def fn(row):if row['ranking'] == 1:return row['Balance_from_Q2']else:return np.nandf['Balance_from_Q2'] = df.apply(lambda row:fn(row), axis=1)
# 计算结束,删除'ranking'字段
df = df.drop(columns = ['ranking'])

思路

1.根据字段'site'和'material'进行分组进行排序,生成'ranking'字段(类似于Pandas实现SQL窗口函数中的ROW_NUMBER()功能)

df['ranking'] = df.groupby(['site','material'])['Balance_from_Q2'].rank(ascending=1,method='first').astype(int)

2.只保留排序为1的'Balance_from_Q2'数值,其余用空值替代

[Pandas] 相同分组条件下的特定列除第一行以外的值为空相关推荐

  1. pandas 根据筛选条件对指定excel列进行筛选

    pandas 根据筛选条件对指定excel列进行筛选 导入需要筛选的excel和筛选条件 要筛选的表格A 思路 结果 这两天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量较大的exce ...

  2. Pandas根据筛选条件对指定excel列进行筛选!神器!

    这两天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量较大的excel,将该excel分成学生文章.老师文章两份excel,以第一作者为区分,B站学习法稍微补了补python操作exce ...

  3. mysql ignore用法_php – 在某些条件下在一列上使用MySQL IGNORE

    我想将Gmail中的记录导入表格,我不需要为每个帐户重复. 描述: 我有一个名为list的表,其定义如下: id int(11), account_id int(11), email varchar( ...

  4. pyspark 条件_删除pyspark中特定条件下的特定行

    我是火花的新手 . 我想删除一行使用spark sql.due来删除temptable中的不兼容性到目前为止我已经读过,操作删除像sql查询我需要永久保存pyspark中的表,这是hive表我猜 . ...

  5. 2.27√ 2.25的条件下作两点修改:表AB可能存在值相同的元素,但新生成的表C的元素值各不相同;利用A表空间存放表C

    #include<stdio.h> #include<malloc.h> #include <stdlib.h> #define maxsize 10typedef ...

  6. pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

  7. Ext.Net中CheckboxSelectionModel的动态隐藏(显示),一定条件下的隐藏(不让选择),获得多选栏位的信息,及后台控件的动态创建...

    (1) Ext.Net 中CheckboxSelectionModel在一定的条件下隐藏特定的row <head id="Head1" runat="server& ...

  8. FineReport:关于扩展行列求各种条件下的函数运用

    最简单的扩展列,扩展行的求"最大,最小,平均"值的例子 设计图 效果图 相关函数 =MAX(B2:E2) =MIN(B2:E2) =AVERAGE(B2:E2) 这个是(满足条件) ...

  9. pandas指定从第一行读取正文数据

    有的时候excel文件是没有列标签的,而pandas默认读取excel文件的时候是将第一行作为列标签来读取的,所以文件中的第一行数据就被读成了列标签了,解决方法是在读取或者写入excel文件的时候设置 ...

最新文章

  1. 利用泛型接口实现生成器
  2. 导出websphere内存镜像
  3. 三分钟Docker-镜像、容器实战篇
  4. 如何使得客户端和服务器端完美配合做IOS应用内付费
  5. 地球上最神奇的10种物质,打赌你都没见过!
  6. index.wxss 导入不显示结果
  7. 在凡客四个月的工作总结
  8. 大数据学习笔记05:ZooKeeper集群
  9. mysql如何重复_mysql 处理重复数据
  10. MongoDB学习探讨
  11. asyncdata 获取参数_nuxt的asyncData发送post请求如何传递FormData形式的参数
  12. 阶段3 1.Mybatis_03.自定义Mybatis框架_5.自定义Mybatis的编码-创建两个默认实现类并分析类之间的关系...
  13. Android OTG 读写U盘文件
  14. 019--python内置函数
  15. 产品经理知识框架+求职面经——快手,字节跳动,
  16. Web全栈~29.MySQL
  17. 《公司理财师专业能力》笔记
  18. win10宽带连接错误720
  19. Node.js——npm_包的概念与操作
  20. 半身全身发型替换之一: 方法调研以及相关问题

热门文章

  1. Ubuntu的快乐学习1——Ubuntu18.04的ROS平台搭建
  2. mac 上双击终端执行sh文件
  3. 关于蕴含真值表的解释<韦恩图><C代码>
  4. pip安装模块时换源下载
  5. b2DebugDraw
  6. 写出漂亮代码的45个小技巧,真好用
  7. 【英语天天读】Advice to a Young Man
  8. 【柜子设计】草图大师及插件AFU321安装
  9. comp9334辅导 ass1
  10. win10安装Andorid Studio常见问题