首页 > 编程语言 >不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?

不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?

时间:2023-04-27 11:35:28浏览次数:37  
标签:compare Python 最大值 df 最小值 datetime64 apply d2 col


寂寂竟何待,朝朝空自归。

大家好,我是Python进阶者。

一、前言

昨天在Python最强王者交流群【鱼鱼鱼也不】问了一个Pandas处理的问题,下图是讨论截图:


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_python

下图是他的原始数据:


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_python_02

其实一开始是有点难以理解的。其实这个就是想判断两列的情况,用一列值填充另一列值。

二、实现过程

这里【猫药师Kelly】给了一个解答,如下所示:


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_数据分析_03

后来【郑煜哲·Xiaopang】也给了一个代码,如下所示:

df["col1"].fillna(df[col2])

看上去的确可行,完美地解决了粉丝的问题!


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_机器学习_04

不知道为啥他后面又拿出来问了,问他原因也没说具体,可能是自己不会实现吧(盲猜)。细节方面就不说了,直接放上【月神】的解法。


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_编程语言_05

import pandas as pd

file = ""
output_filename = ""

data1 = pd.read_excel(file, sheet_name='Sheet1', dtype={'eventdate': 'datetime64[ns]', 'u1': 'datetime64[ns]'})
d2 = pd.read_excel(file, sheet_name='Sheet2', dtype={'f1': 'datetime64[ns]', 'f2': 'datetime64[ns]'})


def match_description(s, df, compare_col, value_col):
    """判断df[compare_col]中是否有s,如果有,则返回df[value_col]的第一个值,否则返回空"""
    compare_data = df[df[compare_col] == s].copy()
    if compare_data.empty:
        return None
    return compare_data[value_col].values[0]


# apply方法第一个.取时间是时分都相等的对应值
d2['gbvibforwardrms'] = d2['f1'].apply(match_description, args=(data1, 'u1', 'gbvibforwardrms'))
# apply方法第二个.取是都是当天时间对应值
d2['gbvibforwardrms1'] = d2['f2'].apply(match_description, args=(data1, 'eventdate', 'gbvibforwardrms'))
# 第一个apply值的缺失值,补第二个apply值, 两列都为空用空字符串填充
d2['c'] = d2['gbvibforwardrms'].fillna(d2['gbvibforwardrms1']).fillna('')
# 数据保存
d2['c'].to_excel(output_filename, sheet_name='data3')

一把过,太强了!


不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_机器学习_06

最后再拓展一些,【~上善居士~ 郭百川】分享了几个常用的数据分析姿势,如下图所示:

不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_数据分析_07

还有一个,如下图所示:

不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?_人工智能_08

速查表连接如下:

https://github.com/pandas-dev/pandas/tree/master/doc/cheatsheet

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了一个Pandas处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。


标签:compare,Python,最大值,df,最小值,datetime64,apply,d2,col
From: https://blog.51cto.com/u_13389043/6230103

相关文章

  • 软件测试选择学习java还是python?
     你好,我是小牛。当你学完软件测试基本理论,掌握业务测试流程,功能测试可以搞定,数据库和linux玩的也很溜时,接下来想进一步进阶,那么学习一门编程语言必不可少。同时,学习一门编程语言也是你成为自动化测试工程师乃至测试开发工程师的基本准入门槛。目前,编程语言五花八门,比如很多人大学......
  • python-docx对已存在的段落p1设置英文字体、中文字体、字号大小、居中对齐
    可以使用python-docx库中的样式Styles和元素Paragraph对已存在的段落进行设置。示例代码如下,可以将已存在的段落p1设置为英文字体Calibri,中文字体宋体,字号14,居中对齐:fromdocximportDocumentfromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENTfro......
  • python-doc添加段落后设置字体、字号、加粗、对齐
    python-doc添加段落后设置字体、字号、加粗、对齐fromdocximportDocument#导入Document类,用于创建文档fromdocx.sharedimportPt,RGBColor#导入Pt类和RGBColor类,用于设置字体大小和颜色fromdocx.enum.textimportWD_PARAGRAPH_ALIGNMENT#导入WD_PARAGRAPH_ALI......
  • Python relative import local package module file All In One
    PythonrelativeimportlocalpackagemodulefileAllInOne$tree└──project├──package1│├──module1.py│└──module2.py└──package2├──__init__.py├──module3.py├──module4.py......
  • python yaml 配置文件的使用
    yaml介绍yaml的英文名称是YetAnotherMarkupLanguage,直译过来就是标记语言。yaml用的比较多的地方就是写配置文件,比如yaml配置文件在Kubernetes用的就非常广泛,学Kubernetes必须要先学yaml文件格式。yaml的基本语法:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab......
  • c语言和python语言写爬虫哪个更好 ?
    c语言和python语言写脚本那个更好?这取决于具体的应用场景和需求。C语言是一种高效、灵活的编程语言,适合于底层系统开发、操作系统、嵌入式开发等领域。C语言可以直接操作内存,因此可以更好地控制程序的性能和资源利用。Python语言则是一种高级编程语言,具有简洁、易读、易写等特点......
  • python+playwright 学习-58 Jenkins上使用 Pipeline 运行 playwright 自动化脚本
    前言Dockerfile.focal可用于在Docker环境中运行Playwright脚本。这些镜像包括在Docker容器中运行浏览器所需的所有依赖项,还包括浏览器本身。playwright在linux系统上目前只支持Ubuntu系统的部分版本,centos和debian系统上是没法运行的。jenkins环境准备需安装2个跟d......
  • Python打印一个字典,输出带双引号
    Python中dict(字典)默认的表示方式是用单引号表示键和值,例如:my_dict={'key1':'value1','key2':'value2'}print(my_dict)这将输出:{'key1':'value1','key2':'value2'}如果你想使用双引号代替单引号进行表示,可以使用json......
  • 【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现
    简介单例模式(SingletonPattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式,同时要通过加锁来避免线程......
  • Python常用魔法方法
    Python常用魔法方法1、__new__()__new__是在实例创建之前被调用的,用于创建实例,然后返回该实例对象2、__init__()__init__是当实例对象创建完成后被调用的,用于初始化一个类实例classMyClass(object):def__init__(self,name,age):print('__init__called')......