代码源数据: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)

二、将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)

无fillna(0)

有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)

四、若两张表没有一样的列名,如何合并?
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来合并表格

五、使用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)

© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...