pandas进行数据的交集与并集方式的数据合并方法

时间:2021-05-22

数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过pandas数据merge功能默认的行为,其实默认下求取的就是两个数据的“交集”。

有如下数据定义:

In [26]: df1Out[26]: data1 key0 0 b1 1 b2 2 a3 3 c4 4 a5 5 a6 6 bIn [27]: df2Out[27]: data2 key0 0 a1 1 b2 2 d3 3 b

进行merge的结果:

In [28]: pd.merge(df1,df2)Out[28]: data1 key data20 0 b 11 0 b 32 1 b 13 1 b 34 6 b 15 6 b 36 2 a 07 4 a 08 5 a 0

从上面的结果中能够看出,merge的默认处理行为是求取了两组数据key的交集,但是对于key的值进行了并集的求取。其实也很好理解,如果仅仅是求取交集而数据没有任何合并那就不叫做数据合并了。

接下来试一下制定了参数的的交集数据合并处理:

In [29]: pd.merge(df1,df2,how='inner')Out[29]: data1 key data20 0 b 11 0 b 32 1 b 13 1 b 34 6 b 15 6 b 36 2 a 07 4 a 08 5 a 0In [30]: result_inner = pd.merge(df1,df2,how='inner')In [31]: result_default = pd.merge(df1,df2)In [32]: result_inner == result_defaultOut[32]: data1 key data20 True True True1 True True True2 True True True3 True True True4 True True True5 True True True6 True True True7 True True True8 True True True

通过上面的结果可以看出:制定了参数的的交集数据合并处理的结果与数据合并方法merge的默认行为是一致的。

再试一下并集数据合并处理方法,这需要制定参数how为outer:

In [35]: result_outer = pd.merge(df1,df2,how='outer')In [36]: result_outerOut[36]: data1 key data20 0.0 b 1.01 0.0 b 3.02 1.0 b 1.03 1.0 b 3.04 6.0 b 1.05 6.0 b 3.06 2.0 a 0.07 4.0 a 0.08 5.0 a 0.09 3.0 c NaN10 NaN d 2.0

通过上面的执行结果可以看出:合并后的数据中的key拥有了两组数据所有的key,而数据虽然有一部分两组数据不能够重合,但也通过NaN的值进行了相应的填补。

还有一点需要注意的,那就是合并之后的数据个数。合并后的数据中,key的个数是两组数据中分别拥有的数据的笛卡尔乘积。如果其中一组没有的时候,进行合并的时候另一组数据中会创建一个NaN数值的对象与之进行合并。

以上这篇pandas进行数据的交集与并集方式的数据合并方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章