电商 网站建设文字,什么是网络营销的基础,哪个网站可以免费下载ppt模板,手机优化系统今天需求是用pandas的两张表格合并起来#xff0c;其中重复的部分将数据进行相加。 用到的是combine#xff08;#xff09;这个函数。
函数详细的使用可以看这个大佬的文章#xff1a; https://www.cnblogs.com/traditional/p/12727997.html #xff08;这个文章使用的测…今天需求是用pandas的两张表格合并起来其中重复的部分将数据进行相加。 用到的是combine这个函数。
函数详细的使用可以看这个大佬的文章 https://www.cnblogs.com/traditional/p/12727997.html 这个文章使用的测试数据有个陷阱后面会说。
我想说的一个场景是这样的 表一 表二 可以看到两个测试表的区别在于D列表一的D列是没有数据的而表二的有。
一开始直接使用这个语句进行合并
def sum(a, b):return a b
final_df df_one.combine(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 a.combine(b, sum)final_df df_one.combine(df_two, sum_s)对combine操作进行嵌套我明白我这个代码非常丑但是他能用。 如果你能把这个代码写的更漂亮欢迎你在评论区指出如果看到我会及时修改。
碎碎念 可能比较少人直接用pandas做excel处理的库我用的搜索引擎没有找到对pandas进行并表的操作。 挺奇怪的我觉得pandas明明非常好用对格式兼容很好。Dataframe的使用也非常舒服。