网络知识 娱乐 pandas第16课时:联立表格merge/join

pandas第16课时:联立表格merge/join

代码源数据:Sheet3

name

num

A001

10

B002

20

c003

30

A002

212

B003

50

c004

60

A003

70

B004

80

c005

333

A004

100

B005

111

c006

120

A005

110

B006

140

c007

150

A006

160


代码源数据:Sheet2

name

price

A001

1

B002

2

c003

3

A002

4

B003

5

c004

6

A003

7

B004

8

c005

9

A004

10

B005

11

c006

12

一、将Sheet3和Sheet2基于‘name’列,将相同的数据合并,使用merge

import pandas as pdnnnum = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')nprice = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')n# sheet_name=' '表示读取表格里某个单元格的数据ntable = num.merge(price, on='name') # on='name'表示基于‘name’列合并nprint(table)


pandas第16课时:联立表格merge/join

二、将Sheet3和Sheet2基于‘name’列,将相同的数据合并,但是保留Sheet3的所有数据,在Sheet2找不到的数据设置为0

import pandas as pdnnnum = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')nprice = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')ntable = num.merge(price, how='left', on = 'name').fillna(0)n# 因为num数据在左边, how='left'表示保留左边表格的数据,fillna(0)表示将NaN设为0,默认是浮点数nprint(table)


pandas第16课时:联立表格merge/join

无fillna(0)


pandas第16课时:联立表格merge/join

有fillna(0)

三、将price浮点数改为整数

import pandas as pdnnnum = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')nprice = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')ntable = num.merge(price, how = 'left', on = 'name').fillna(0)ntable.price = table.price.astype(int) # 将price浮点数改为整数nprint(table)


pandas第16课时:联立表格merge/join

四、若两张表没有相同的列名,如何合并?

import pandas as pdnnnum = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')nprice = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')ntable = num.merge(price, how ='left', left_on='Sheet3的列名', right_on='Sheet2的列名').fillna(0)ntable.price = table.price.astype(int)nprint(table)nn#或者可以通过读取数据的时候设置index_col=' ',用left_on=num.index, right_on=price.index来合并表格


pandas第16课时:联立表格merge/join

五、使用join函数合并数据,方法和merge相似,区别在于

1.join后面不能加left_on,right_on;2.join无需加on可自动通过index合并

import pandas as pdnnnum = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3', index_col='name')nprice = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2', index_col='name') n# 使用join合并时,一定要加index_col=' 'nntable = num.join(price,how='left').fillna(0)n# 或者table = num.join(price,how='left', on='name').fillna(0)nntable.price=table.price.astype(int)nprint(table)


pandas第16课时:联立表格merge/join