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


    点击上方“Python爬虫与数据挖掘”,进行关注

    回复“书籍”即可获赠Python从入门到进阶共10本电子书

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

    大家好,我是Python进阶者。

    一、前言

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

    38df5dd5b1ffa9550fd380b584c96cb8.png

    下图是他的原始数据:

    87e052752b6e4d40c529e9485346f734.jpeg

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

    二、实现过程

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

    1303a7eb1ec328277259840b2137cee4.png

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

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

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

    bf40ba1d8a20b54725c1eb1de204b883.png

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

    405886e63d8af39374c95c08228376e4.png
    1. import pandas as pd
    2. file = ""
    3. output_filename = ""
    4. data1 = pd.read_excel(file, sheet_name='Sheet1', dtype={'eventdate''datetime64[ns]''u1''datetime64[ns]'})
    5. d2 = pd.read_excel(file, sheet_name='Sheet2', dtype={'f1''datetime64[ns]''f2''datetime64[ns]'})
    6. def match_description(s, df, compare_col, value_col):
    7.     """判断df[compare_col]中是否有s,如果有,则返回df[value_col]的第一个值,否则返回空"""
    8.     compare_data = df[df[compare_col] == s].copy()
    9.     if compare_data.empty:
    10.         return None
    11.     return compare_data[value_col].values[0]
    12. # apply方法第一个.取时间是时分都相等的对应值
    13. d2['gbvibforwardrms'] = d2['f1'].apply(match_description, args=(data1, 'u1''gbvibforwardrms'))
    14. # apply方法第二个.取是都是当天时间对应值
    15. d2['gbvibforwardrms1'] = d2['f2'].apply(match_description, args=(data1, 'eventdate''gbvibforwardrms'))
    16. # 第一个apply值的缺失值,补第二个apply值, 两列都为空用空字符串填充
    17. d2['c'] = d2['gbvibforwardrms'].fillna(d2['gbvibforwardrms1']).fillna('')
    18. # 数据保存
    19. d2['c'].to_excel(output_filename, sheet_name='data3')

    一把过,太强了!

    6e26167d5b404d4365c6dd0602502dde.png

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

    22d43d75db143b583180709c97e262ce.png还有一个,如下图所示:

    6684a8c90022c248be0425f348629ea1.png速查表连接如下:

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

    三、总结

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

    最后感谢粉丝【鱼鱼鱼也不】提问,感谢【猫药师Kelly】、【哈佛在等我呢~】、【郑煜哲·Xiaopang】、【~上善居士~ *郭百川】、【月神】、【瑜亮老师】给出的思路和代码解析,感谢【封代春】、【冫马讠成】、【dcpeng】、【此类生物】、【Chloe】、【郎爱君】等人参与学习交流。

    大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python付费学习交流群,欢迎大家加入我的Python学习交流群!

    2c6eec9edda38a0f76d427a042ec5e38.png

    小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

    d7596924c0c356b8a1a1bf8078e6e9ad.png

    赠书规则

    
     

    如果喜欢本文

    欢迎 在看留言分享至朋友圈 三连

    
     
    
     
    
     

    赠书

    
     
    
     
    1. 感谢北京大学出版社提供的图书,感兴趣的童鞋欢迎选购!按以下方式和公众号互动,即有机会获赠以上一本图书!
    2. 活动方式:在公众号后台回复"送书"参与活动,届时会在参与的小伙伴中抽取1名幸运鹅!或者在本公众号后台文章留言累计300次(PS:一篇文章算留言一次,后台有数据统计的,本号有1000余篇文章,欢迎留言支持),满足留言次数也可以免费获得一本赠书,包邮哦!
    3.     活动时间:截至81020点(周三)开奖,不见不散。
    4.     快快拉上你的小伙伴参与进来吧~
    5. 让我知道你在看

    ------------------- End -------------------

    往期精彩文章推荐:

    6c9ff390681ef3d137c23a38847c4c51.png

    欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

    想加入Python学习群请在后台回复【入群

    万水千山总是情,点个【在看】行不行

    /今日留言主题/

    随便说一两句吧~~

  • 相关阅读:
    突破使用debugger反调试的网页
    Linux的命令行
    java毕业设计在线视频教育平台Mybatis+系统+数据库+调试部署
    【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理
    电厂三维人员定位系统的应用与优势有哪些?
    知识点回顾
    splay + 垃圾回收 知识点与例题的简要讲解
    Win11应用商店无法加载页面怎么办?Win11商店无法加载页面
    智慧安防智能化发展趋势及解决方案
    兴业数金 测试 面试真题|面经
  • 原文地址:https://blog.csdn.net/pdcfighting/article/details/126326508