随笔记录——pandas(数据联合与合并)

包含在pandas对象的数据可以通过多种方式联合在一起:

  • pandas.merge根据一个或多个键将行进行连接。对于SQL或其他关系型数据库的用户来说,这种方式比较熟悉,它实现的是数据库的连接操作。
  • pandas.concat使对象在轴向上进行黏合或”堆叠”。
  • combine_first实例方法允许将重叠的数据拼接在一起,以使用一个对象中的值填充另一个对象中的缺失值。
1.1、两个df都存在相同key,进行merge
df1 = pd.DataFrame({'col1':range(6), 'col1_2':['a', 'b', 'c', 'd', 'e', 'f']})
df1
Out[63]:
   col1 col1_2
0     0      a
1     1      b
2     2      c
3     3      d
4     4      e
5     5      f

df2 = pd.DataFrame({'col1':range(4), 'col2_2':['a', 'c', 'e', 'f']})
df2
Out[64]:
   col1 col2_2
0     0      a
1     1      c
2     2      e
3     3      f

df1.merge(df2)
Out[65]:
   col1 col1_2 col2_2
0     0      a      a
1     1      b      c
2     2      c      e
3     3      d      f

df1.merge(df2, on='col1')
Out[66]:
   col1 col1_2 col2_2
0     0      a      a
1     1      b      c
2     2      c      e
3     3      d      f
1.2、 两个df的列名不同,指定列名merge
df2 = pd.DataFrame({'col2':range(4), 'col2_2':['a', 'c', 'e', 'f']})
df2
Out[68]:
   col2 col2_2
0     0      a
1     1      c
2     2      e
3     3      f

df1
Out[69]:
   col1 col1_2
0     0      a
1     1      b
2     2      c
3     3      d
4     4      e
5     5      f

df1.merge(df2, left_on='col1', right_on='col2')
Out[70]:
   col1 col1_2  col2 col2_2
0     0      a     0      a
1     1      b     1      c
2     2      c     2      e
3     3      d     3      f

你可能注意到结果中缺少4和5的值以及相关的数据。默认情况下,merge做的是内连接(’inner’join),结果中的键是两张表的交集。其他可选的选项有’left’、’right’和’outer’。外连接(outer join)是键的并集,联合了左连接和右连接的效果。

2.1、将两个df进行左连接和右连接
df2 = pd.DataFrame({'col1':range(4), 'col2_2':['a', 'c', 'e', 'f']})
df2
Out[73]:
   col1 col2_2
0     0      a
1     1      c
2     2      e
3     3      f

df1.merge(df2, on='col1', how='left')
Out[72]:
   col1 col1_2 col2_2
0     0      a      a
1     1      b      c
2     2      c      e
3     3      d      f
4     4      e    NaN
5     5      f    NaN

df1.merge(df2, on='col1', how='right')
Out[74]:
   col1 col1_2 col2_2
0     0      a      a
1     1      b      c
2     2      c      e
3     3      d      f
2.2、两个df进行外连接

外连接(outer join)是键的并集,联合了左连接和右连接的效果:

df1.merge(df2, on='col1', how='outer')
Out[75]:
   col1 col1_2 col2_2
0     0      a      a
1     1      b      c
2     2      c      e
3     3      d      f
4     4      e    NaN
5     5      f    NaN
3、how参数的不同连接类型

随笔记录——pandas(数据联合与合并)
; 4、使用多个键进行合并

传入一个列名的列表

left_df = pd.DataFrame({'col1':['aaa', 'bbb', 'ccc', 'ddd'], 'col2':['123', '123', '321', '132'], 'val':[22.1, 234.4, 90.2, 84.1]})

left_df
Out[84]:
  col1 col2    val
0  aaa  123   22.1
1  bbb  123  234.4
2  ccc  321   90.2
3  ddd  132   84.1

right_df = pd.DataFrame({'col1':['bbb', 'bbb', 'aaa', 'ddd'], 'col2':['123', '123', '321', '132'], 'val':[0.1, 0.4, 0.2, 1.1]})
right_df
Out[87]:
  col1 col2  val
0  bbb  123  0.1
1  bbb  123  0.4
2  aaa  321  0.2
3  ddd  132  1.1

pd.merge(left_df, right_df, on=['col1', 'col2'], how='inner')
Out[86]:
  col1 col2  val_x  val_y
0  bbb  123  234.4    0.1
1  bbb  123  234.4    0.4
2  ddd  132   84.1    1.1

待续。。。

Original: https://blog.csdn.net/weixin_36893273/article/details/123198958
Author: 就是一顿骚操作
Title: 随笔记录——pandas(数据联合与合并)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678548/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球