点击上方“Python爬虫与数据挖掘”,进行关注
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
寂寂竟何待,朝朝空自归。
大家好,我是Python进阶者。
一、前言
昨天在Python最强王者交流群【鱼鱼鱼也不】问了一个Pandas
处理的问题,下图是讨论截图:
下图是他的原始数据:
其实一开始是有点难以理解的。其实这个就是想判断两列的情况,用一列值填充另一列值。
二、实现过程
这里【猫药师Kelly】给了一个解答,如下所示:
后来【郑煜哲·Xiaopang】也给了一个代码,如下所示:
df["col1"].fillna(df[col2])
看上去的确可行,完美地解决了粉丝的问题!
不知道为啥他后面又拿出来问了,问他原因也没说具体,可能是自己不会实现吧(盲猜)。细节方面就不说了,直接放上【月神】的解法。
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')
一把过,太强了!
最后再拓展一些,【~上善居士~ 郭百川】分享了几个常用的数据分析姿势,如下图所示:
还有一个,如下图所示:
速查表连接如下:
https://github.com/pandas-dev/pandas/tree/master/doc/cheatsheet
三、总结
大家好,我是Python进阶者。这篇文章主要盘点了一个Pandas
处理的问题,文中针对该问题给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。
最后感谢粉丝【鱼鱼鱼也不】提问,感谢【猫药师Kelly】、【哈佛在等我呢~】、【郑煜哲·Xiaopang】、【~上善居士~ *郭百川】、【月神】、【瑜亮老师】给出的思路和代码解析,感谢【封代春】、【冫马讠成】、【dcpeng】、【此类生物】、【Chloe】、【郎爱君】等人参与学习交流。
大家在学习过程中如果有遇到问题,欢迎随时联系我解决(我的微信:pdcfighting),应粉丝要求,我创建了一些高质量的Python
付费学习交流群,欢迎大家加入我的Python
学习交流群!
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
赠书规则
如果喜欢本文
欢迎 在看丨留言丨分享至朋友圈 三连
赠书
感谢北京大学出版社提供的图书,感兴趣的童鞋欢迎选购!按以下方式和公众号互动,即有机会获赠以上一本图书!
活动方式:在公众号后台回复"送书"参与活动,届时会在参与的小伙伴中抽取1名幸运鹅!或者在本公众号后台文章留言累计300次(PS:一篇文章算留言一次,后台有数据统计的,本号有1000余篇文章,欢迎留言支持),满足留言次数也可以免费获得一本赠书,包邮哦!
活动时间:截至8月10日20点(周三)开奖,不见不散。
快快拉上你的小伙伴参与进来吧~
让我知道你在看
------------------- End -------------------
往期精彩文章推荐:
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~