series 合并pandas_pandas合并数据操作

简介

pandas提供了一套合并数据集操作的方法:

pandas.merge()可根据一个或者多个键将不同的DataFrame连接在一起,类似于SQL数据库中的合并操作;

pandas.concat()可以沿某个轴将多个数据集连接在一起。

接下来将分别对这两种方法进行介绍。

merge()函数

merge()函数中的参数如下:

参数

描述

left

参与合并到左侧DataFrame

right

参与合并到右侧DataFrame

how

合并方式(‘inner’、‘outer’、‘left’、‘right’)其中之一,默认为‘inner’

on

用于连接的列名。未指定则使用两列的交集作为连接键

left_on

左侧DataFrame中用作连接键的列

right_on

右侧DataFrame中用作连接键的列

left_index

将左侧的行索引用作连接键

right_index

将右侧的行索引用作连接键

sort

对合并后的数据进行排序,默认为True

suffixes

用于追加到重叠列名的末尾。例如,左右两个DataFrame都有‘data’列,则结果中就会出现‘data_x’和‘data_y’

copy

默认总是复制

以一个例子开始:

>>>import numpy as np

>>>import pandas as pd

>>>df1 = pd.DataFrame({'data1': np.arange(7), 'name': list('bbbaacd')})

>>>df1

data1 name

0 0 b

1 1 b

2 2 b

3 3 a

4 4 a

5 5 c

6 6 d

>>>df2 = pd.DataFrame({'data2': [0, 2, 4], 'name': ['a', 'b', 'c']})

>>>df2

data2 name

0 0 a

1 2 b

2 4 c

>>>pd.merge(df1, df2)

data1 name data2

0 0 b 2

1 1 b 2

2 2 b 2

3 3 a 0

4 4 a 0

5 5 c 4

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

>>>importnumpyasnp

>>>importpandasaspd

>>>df1=pd.DataFrame({'data1':np.arange(7),'name':list('bbbaacd')})

>>>df1

data1name

00b

11b

22b

33a

44a

55c

66d

>>>df2=pd.DataFrame({'data2':[0,2,4],'name':['a','b','c']})

>>>df2

data2name

00a

12b

24c

>>>pd.merge(df1,df2)

data1namedata2

00b2

11b2

22b2

33a0

44a0

55c4

在这个例子中,默认使用两个DataFrame的交集作为合并键,也就是'name'列。这是多对一的合并,也就是说df1中有多个重复值与df2中一个值合并(2个’a’对一个’a’,3个’b’对一个’b’)。默认是'inner'的方式,只要两者都有的值才合并(’a’, ‘b’, ‘c’),还可以使用其他的合并方式:

# 并集合并

>>>pd.merge(df1, df2, how='outer')

data1 name data2

0 0 b 2.0

1 1 b 2.0

2 2 b 2.0

3 3 a 0.0

4 4 a 0.0

5 5 c 4.0

6 6 d NaN

# 左合并

>>>pd.merge(df1, df2, how='left')

data1 name data2

0 0 b 2.0

1 1 b 2.0

2 2 b 2.0

3 3 a 0.0

4 4 a 0.0

5 5 c 4.0

6 6 d NaN

# 右合并

>>>pd.merge(df1, df2, how='right')

data1 name data2

0 0 b 2

1 1 b 2

2 2 b 2

3 3 a 0

4 4 a 0

5 5 c 4

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值