pandas表格并表(累加合并)

阅读: 评论:0

pandas表格并表(累加合并)

pandas表格并表(累加合并)

今天需求是用pandas的两张表格合并起来,其中重复的部分将数据进行相加。
用到的是combine()这个函数。

函数详细的使用可以看这个大佬的文章:
.html
(这个文章使用的测试数据有个陷阱,后面会说。)

我想说的一个场景是这样的:
表一:

表二:

可以看到两个测试表的区别在于D列,表一的D列是没有数据的,而表二的有。

一开始直接使用这个语句进行合并:

def sum(a, b):return a + b
final_df = df_onebine(df_two, sum)


得到的结果是这样的,明明表二的D列有数据,但是没有合并。

跟了下代码,这里的a + b是实际上将两个Series进行加操作,应该是nan加上一个数字的时候会报错,但是pandas的处理将出现错误的格子的错误信息忽视掉了,所以导致没有合并。

这里就要提到上面那个文章里面的陷阱,测试数据都是使用单行Series进行合并,所以combine后面的func实际上是对单个数值变量进行操作。
而如果你和我一样是用一个二维的dataframe表进行combine,他其实是对每个Series进行操作,所以简单的用+进行合并操作是会有问题的。这一点尤其是在使用lambda表达式这种匿名函数时更容易被忽视的。
那对于二维的Dataframe表格我提出的解决办法是:

def sum(a, b):if pd.isna(a):return belif pd.isna(b):return aelse:return a + bdef sum_s(a, b):return abine(b, sum)final_df = df_onebine(df_two, sum_s)

对combine操作进行嵌套,我明白我这个代码非常丑,但是他能用。
如果你能把这个代码写的更漂亮,欢迎你在评论区指出,如果看到我会及时修改。

碎碎念:
可能比较少人直接用pandas做excel处理的库?我用的搜索引擎没有找到对pandas进行并表的操作。
挺奇怪的,我觉得pandas明明非常好用,对格式兼容很好。Dataframe的使用也非常舒服。

本文发布于:2024-02-04 08:35:42,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170703231454006.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:表格   pandas
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23