代码源数据: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)
二、将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)
无fillna(0)
有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)
四、若两张表没有相同的列名,如何合并?
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来合并表格
五、使用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)