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 pd

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

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

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

import pandas as pd

num = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')
price = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')
table = num.merge(price, how='left', on = 'name').fillna(0)
# 由于num数据在左边, how='left'表明保留左边表格的数据,fillna(0)表明将NaN设为0,默认是浮点数
print(table)

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

无fillna(0)

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

有fillna(0)

三、将price浮点数改为整数

import pandas as pd

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

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

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

import pandas as pd

num = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3')
price = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2')
table = num.merge(price, how ='left', left_on='Sheet3的列名', right_on='Sheet2的列名').fillna(0)
table.price = table.price.astype(int)
print(table)

#或者可以通过读取数据的时候设置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 pd

num = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet3', index_col='name')
price = pd.read_excel('文件路径/文件名.文件格式', sheet_name='Sheet2', index_col='name') 
# 使用join合并时,必定要加index_col=' '

table = num.join(price,how='left').fillna(0)
# 或者table = num.join(price,how='left', on='name').fillna(0)

table.price=table.price.astype(int)
print(table)

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

© 版权声明

相关文章

1 条评论

none
暂无评论...