pandas两个dataframe相减,dataframe 相减

  pandas两个dataframe相减,dataframe 相减

  Python是一种优秀的数据分析语言,主要是因为以数据为中心的Python软件包有一个奇妙的生态系统。下面文章主要介绍熊猫自定义移位和DataFrame差集的相关信息,有需要的可以参考一下。

  

目录

熊猫高级移位偏移Datafream对象差集汇总大家好,我是肖晓明。今天分享两个小技巧:

 

  

Pandas的高级shift偏移

 

  很多玩量化的朋友经常会遇到这样的问题:

  其中一个量化的老板居然半年后又问我怎么达到这样的效果,他居然忘了我之前给他写过信。为了防止别人再次遇到类似问题,特写此文。

  我们知道熊猫的默认API不支持这样的操作,只能自己想办法实现了。我用数值索引来实现这个功能,并封装起来。

  我们最终的包装方法如下:

  将numpy作为np导入

  进口熊猫作为pd

  def adv_shift(s,n,na_value=pd。NA):

  t=np.arange(s.shape[0])-n

  t[t 0]=s.shape[0]

  tmp=s.append(pd。系列(na_value))

  返回pd。系列(tmp.iloc[t].值,索引=s.index)

  然后生成测试数据来完成这个需求:

  df=pd。DataFrame({a: [200,300,500,800,600], b: [1,1,1,2,1]})

  df[c]=df.a-adv_shift(df.a,df.b,0)

  df

  ABC 0200120013001100250012003800250046001-200显示结果完全符合要求。

  如果要将高级偏移adv_shift方法直接添加到DataFrame对象,可以这样编写:

  def adv_shift(self,field,n,na_value=pd。NA):

  t=NP . arange(self . shape[0])-self[n]

  s=self[field]

  t[t 0]=s.shape[0]

  tmp=s.append(pd。系列(na_value))

  返回pd。系列(tmp.iloc[t].值,索引=s.index)

  警察。DataFrame.adv_shift=adv_shift

  呼叫方法:

  df[c]=df.a-df.adv_shift(a , b ,0)

  df

  ABC 0200120013001100250012003800250046001-200最终结果与上述一致。

  

Datafream对象求差集

 

  让我们看看如何解决Datafream对象的交集、并集和差集:

  进口熊猫作为pd

  df1=pd。DataFrame([[1,11],[2,22],[3,33]],

  columns=[a , b])

  df2=pd。DataFrame([[0,0],[1,11],[2,22],[4,44]],列=[a , b])

  显示器(df1)

  显示器(df2)

  交集和并集的一般实现使用merge方法。

  相交:

  合并(df2)

  工会:

  df1.merge(df2,how=outer )

  关于差异集,我使用了重复消除法。想法是将df1与df2拼接,然后删除所有重复项,不保留它们。为了删除所有的df2,拼接df2两次,这样所有的df2数据都会被删除,df1所在的与df2一致的数据也会被删除。

  代码是:

  pd.concat([df1,df2,df2])。drop_duplicates(keep=False)

  测试结果:

  

总结

 

  关于panda自定义移位和DataFrame差异集的这篇文章到此结束。有关Pandasshift和DataFrame差集的更多信息,请搜索热门IT软件开发工作室之前的文章或继续浏览下面的相关文章。希望你以后能支持热门的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: