pandas表格大小(pandas第16课时联立表格merge)
代码源数据:Sheet3name,我来为大家科普一下关于pandas表格大小?下面希望有你要的答案,我们一起来看看吧!
pandas表格大小
代码源数据: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)
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com