0
点赞
收藏
分享

微信扫一扫

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


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

大家好,我是Python进阶者。

一、前言

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


不使用内置函数的情况下,如何使用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处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。


举报

相关推荐

0 条评论