import pandas as pd
import matplotlib.pyplot as plt
#读Excel工作簿中两张表的数据,数据如上图
students = pd.read_excel('students.xlsx',sheet_name='student')
scores = pd.read_excel('students.xlsx',sheet_name='score')
#将表联合
table = students.merge(scores,on='ID')
print(table)
********************************************************
ID 姓名 成绩
0 1 student_001 84.0
1 3 student_003 59.0
2 5 student_005 67.0
3 7 student_007 79.0
4 9 student_009 50.0
5 11 student_011 90.0
6 13 student_013 78.0
7 15 student_015 76.0
8 17 student_017 100.0
9 19 student_019 NaN
10 21 student_021 88.0
11 23 student_023 NaN
12 25 student_025 75.0
*******************************************************
#merge也可以这么使用,效果是一样的
table =pd.merge(students,scores,how='left',on='ID')
merge( self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None,)
table = students.merge(scores,how='left',on='ID').fillna(0)
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
#校验数据,查找是否存在异常成绩
def score_validation(row):
if not 0<=row['成绩']<=100:
print(f'#%s\t student %s has an invalid score %s'%(row.ID,row['姓名'],row['成绩']))
#在主函数里面调用.axis=1轴为1表示数据由左向右(行校验),为0表示由上到下(列校验)
students.apply(score_validation,axis=1)
*********************************************************************************************
#1 student student_001 has an invalid score 184
#7 student student_007 has an invalid score -79
#15 student student_015 has an invalid score 176
#19 student student_019 has an invalid score -15
#23 student student_023 has an invalid score 111
import pandas as pd
#读取文件
datas = pd.read_excel('Tel.xlsx')
#对Tel列进行分割,将数据保存在df,expand参数不能省略
df=datas['Tel'].str.split('-',expand=True)
datas['区号']=df[0]
datas['电话']=df[1]
datas.to_excel('Tel.xlsx')
print(datas)
*****************************************
name Tel 区号 电话
0 zhang1 010-8712491 010 8712491
1 zhang2 029-8752112 029 8752112
2 zhang3 09170-8712113 09170 8712113
3 zhang4 010-4712114 010 4712114
4 zhang5 010-3712115 010 3712115
5 wang01 020-8712116 020 8712116
6 wang02 010-8712117 010 8712117
7 wang03 021-8512118 021 8512118
8 wang04 010-8012119 010 8012119
9 wang05 0910-8712120 0910 8712120
联系客服