合并
| s1 = pd.Series([1,2,3,4],index=['a','b','c','d'],name="列1") |
| s2 = pd.Series([5,6,7,8],index=['a','b','c','e'],name='列2') |
| print(s1) |
| print(s2) |
output
| a 1 |
| b 2 |
| c 3 |
| d 4 |
| Name: 列1, dtype: int64 |
| |
| a 5 |
| b 6 |
| c 7 |
| e 8 |
| Name: 列2, dtype: int64 |
| |
| s3 = pd.concat([s1,s2]) |
| print(s3) |
output
| a 1 |
| b 2 |
| c 3 |
| d 4 |
| a 5 |
| b 6 |
| c 7 |
| e 8 |
| dtype: int64 |
| |
| s3 = pd.concat([s1,s2],axis=1) |
| print(s3) |
output
| 列1 列2 |
| a 1.0 5.0 |
| b 2.0 6.0 |
| c 3.0 7.0 |
| d 4.0 NaN |
| e NaN 8.0 |
| dic1={ |
| "学号":[1,2,3,5], |
| "姓名":['张三','李四','王五','赵六'], |
| "班级":['一班','一班','一班','一班'], |
| "成绩":[80,90,95,99] |
| } |
| dic2={ |
| "学号":[1,2,3,4], |
| "姓名":['张三1','李四1','王五1','赵六1'], |
| "班级":['二班','二班','二班','二班'], |
| "成绩":[82,92,92,72], |
| "成绩1":[82,92,92,72] |
| } |
| data1 = pd.DataFrame(dic1) |
| data2 = pd.DataFrame(dic2) |
| print(data1) |
| print(data2) |
output
| 学号 姓名 班级 成绩 |
| 0 1 张三 一班 80 |
| 1 2 李四 一班 90 |
| 2 3 王五 一班 95 |
| 3 5 赵六 一班 99 |
| |
| 学号 姓名 班级 成绩 成绩1 |
| 0 1 张三1 二班 82 82 |
| 1 2 李四1 二班 92 92 |
| 2 3 王五1 二班 92 92 |
| 3 4 赵六1 二班 72 72 |
| |
| data3 = pd.concat([data1,data2],axis=0) |
| print(data3) |
output
| 学号 姓名 班级 成绩 成绩1 |
| 0 1 张三 一班 80 NaN |
| 1 2 李四 一班 90 NaN |
| 2 3 王五 一班 95 NaN |
| 3 5 赵六 一班 99 NaN |
| 0 1 张三1 二班 82 82.0 |
| 1 2 李四1 二班 92 92.0 |
| 2 3 王五1 二班 92 92.0 |
| 3 4 赵六1 二班 72 72.0 |
| dic1={ |
| "学号":[1,2,3,4], |
| "姓名":['张三','李四','王五','赵六'], |
| "班级":['一班','一班','一班','一班'], |
| "语文成绩":[80,90,95,99] |
| } |
| dic2={ |
| "学号":[1,2,3,5], |
| "姓名":['张三','李四','王五','赵六'], |
| "班级":['一班','一班','一班','一班'], |
| "数学成绩":[82,92,92,72], |
| } |
| data1 = pd.DataFrame(dic1,index=dic1['学号']) |
| data2 = pd.DataFrame(dic2,index=dic2['学号']) |
| print(data1) |
| print(data2) |
output
| 学号 姓名 班级 语文成绩 |
| 1 1 张三 一班 80 |
| 2 2 李四 一班 90 |
| 3 3 王五 一班 95 |
| 4 4 赵六 一班 99 |
| |
| 学号 姓名 班级 数学成绩 |
| 1 1 张三 一班 82 |
| 2 2 李四 一班 92 |
| 3 3 王五 一班 92 |
| 5 5 赵六 一班 72 |
| |
| data3 = pd.concat([data1,data2],axis=1) |
| print(data3) |
output
| 学号 姓名 班级 语文成绩 学号 姓名 班级 数学成绩 |
| 1 1.0 张三 一班 80.0 1.0 张三 一班 82.0 |
| 2 2.0 李四 一班 90.0 2.0 李四 一班 92.0 |
| 3 3.0 王五 一班 95.0 3.0 王五 一班 92.0 |
| 4 4.0 赵六 一班 99.0 NaN NaN NaN NaN |
| 5 NaN NaN NaN NaN 5.0 赵六 一班 72.0 |
| |
| data3 = pd.concat([data1,data2],axis=1,join="inner") |
| print(data3) |
output
| 学号 姓名 班级 语文成绩 学号 姓名 班级 数学成绩 |
| 1 1 张三 一班 80 1 张三 一班 82 |
| 2 2 李四 一班 90 2 李四 一班 92 |
| 3 3 王五 一班 95 3 王五 一班 92 |
| |
| data3 = pd.concat([data1,data2],axis=1,join="outer") |
| print(data3) |
output
| 学号 姓名 班级 语文成绩 学号 姓名 班级 数学成绩 |
| 1 1.0 张三 一班 80.0 1.0 张三 一班 82.0 |
| 2 2.0 李四 一班 90.0 2.0 李四 一班 92.0 |
| 3 3.0 王五 一班 95.0 3.0 王五 一班 92.0 |
| 4 4.0 赵六 一班 99.0 NaN NaN NaN NaN |
| 5 NaN NaN NaN NaN 5.0 赵六 一班 72.0 |
| |
| data3 = pd.concat([data1,data2],axis=1).reindex(data1.index) |
| print(data3) |
output
| 学号 姓名 班级 语文成绩 学号 姓名 班级 数学成绩 |
| 1 1.0 张三 一班 80.0 1.0 张三 一班 82.0 |
| 2 2.0 李四 一班 90.0 2.0 李四 一班 92.0 |
| 3 3.0 王五 一班 95.0 3.0 王五 一班 92.0 |
| 4 4.0 赵六 一班 99.0 NaN NaN NaN NaN |
| |
| data3 = pd.concat([data1,data2],axis=1).reindex(data2.index) |
| print(data3) |
output
| 学号 姓名 班级 语文成绩 学号 姓名 班级 数学成绩 |
| 1 1.0 张三 一班 80.0 1.0 张三 一班 82.0 |
| 2 2.0 李四 一班 90.0 2.0 李四 一班 92.0 |
| 3 3.0 王五 一班 95.0 3.0 王五 一班 92.0 |
| 5 NaN NaN NaN NaN 5.0 赵六 一班 72.0 |
apply函数
| path = r"C:\work\python\pandas_files\计算列.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 商品名称 单价 销售数量 销售金额 |
| 0 1 香蕉 5 20 NaN |
| 1 2 苹果 6 15 NaN |
| 2 3 梨 3 18 NaN |
| def hs(a): |
| return len(a) |
| b = data['商品名称'].apply(hs) |
| print(b) |
output
| 0 2 |
| 1 2 |
| 2 1 |
| Name: 商品名称, dtype: int64 |
| |
| b = data['商品名称'].apply(lambda a : len(a)) |
| print(b) |
output
| 0 2 |
| 1 2 |
| 2 1 |
| Name: 商品名称, dtype: int64 |
| |
| b = data['商品名称'].apply(len) |
| print(b) |
output
| 0 2 |
| 1 2 |
| 2 1 |
| Name: 商品名称, dtype: int64 |
| |
| b = data['单价'].apply(lambda a: a+5) |
| print(b) |
output
| 0 10 |
| 1 11 |
| 2 8 |
| Name: 单价, dtype: int64 |
| # if-else 如果单价低于5的,加3 |
| def hs1(a): |
| if a < 5: |
| return a+3 |
| else: |
| return a |
| # 如果单价小于5,就将单价+3 |
| data['单价'] = data['单价'].apply(hs1) |
| print(data) |
output
| 序号 商品名称 单价 销售数量 销售金额 |
| 0 1 香蕉 5 20 NaN |
| 1 2 苹果 6 15 NaN |
| 2 3 梨 6 18 NaN |
| # 使用lambda表达式 |
| data['单价'] = data['单价'].apply(lambda a: a+3 if a<5 else a) |
| print(data) |
output
| 序号 商品名称 单价 销售数量 销售金额 |
| 0 1 香蕉 5 20 NaN |
| 1 2 苹果 6 15 NaN |
| 2 3 梨 6 18 NaN |
| # 计算销售金额 |
| data['销售金额'] = data['单价'] * data['销售数量'] |
| print(data) |
output
| 序号 商品名称 单价 销售数量 销售金额 |
| 0 1 香蕉 5 20 100 |
| 1 2 苹果 6 15 90 |
| 2 3 梨 6 18 108 |
| # 单价大于5的就打9折 |
| b = data['单价'].apply(lambda a: a*0.9 if a > 5 else a) |
| data['打折后的销售金额'] = b * data['销售数量'] |
| print(data) |
output
| 序号 商品名称 单价 销售数量 销售金额 打折后的销售金额 |
| 0 1 香蕉 5 20 100 100.0 |
| 1 2 苹果 6 15 90 81.0 |
| 2 3 梨 6 18 108 97.2 |
| |
| path = r"C:\work\python\pandas_files\计算日期.xlsx" |
| data = pd.read_excel(path,index_col='序号') |
| print(data) |
output
| 起始日期 结束日期 |
| 序号 |
| 1 2020-01-01 2020-01-08 |
| 2 2020-03-01 2020-09-07 |
| 3 2020-05-03 2020-08-08 |
| 4 2020-04-08 2020-11-08 |
| 5 2020-07-30 2021-09-03 |
| data['日期差'] = (data['结束日期'] - data['起始日期']) |
| print(data) |
output
| 起始日期 结束日期 日期差 |
| 序号 |
| 1 2020-01-01 2020-01-08 7 days |
| 2 2020-03-01 2020-09-07 190 days |
| 3 2020-05-03 2020-08-08 97 days |
| 4 2020-04-08 2020-11-08 214 days |
| 5 2020-07-30 2021-09-03 400 days |
| data['日期差'] = data['日期差'].apply(lambda a : a.days) |
| print(data) |
output
| 起始日期 结束日期 日期差 |
| 序号 |
| 1 2020-01-01 2020-01-08 7 |
| 2 2020-03-01 2020-09-07 190 |
| 3 2020-05-03 2020-08-08 97 |
| 4 2020-04-08 2020-11-08 214 |
| 5 2020-07-30 2021-09-03 400 |
筛选
| path = r"C:\work\python\pandas_files\筛选.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 0 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 |
| 1 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 |
| 2 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 3 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 4 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| 5 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 |
| b = data.loc[2:5] |
| print(b) |
output
| 序号 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 2 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 3 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 4 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| 5 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 |
| data.set_index('序号', inplace=True) |
| print(data) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 序号 |
| 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 |
| 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 |
| 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 |
| data1 = data[2:5] |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 序号 |
| 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| data2 = data.loc[2:5] |
| print(data2) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 序号 |
| 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 |
| 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| data = pd.read_excel(path, index_col='出生日期') |
| print(data) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| # 需要日期做索引,同时日期排序 |
| data = data.sort_index() |
| print(data) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| b = data['1987-02-06':'1989-07-08'] |
| print(b) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| b = data['1987':'1989'] |
| print(b) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| b = data['1983':'1987'] |
| print(b) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| b = data['1983-10':'1987'] |
| print(b) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| data = pd.read_excel(path, index_col='出生日期') |
| data.sort_index(inplace=True) |
| print(data) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| # 查询>=1987年的记录 |
| data1 = data.truncate(before='1987-03') |
| print(data1) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| |
| |
| data1 = data['1987-03':] |
| print(data1) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| |
| |
| data = data.set_index("性别") |
| b = data.loc["女"] |
| print(b) |
output
| 序号 姓名 语文 数学 英语 总分 地址 |
| 性别 |
| 女 2 丁智敏 61 61 60 182 冀州市某某区某某小区a座 |
| 女 4 张伊 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 女 3 李平平 58 49 33 140 襄阳市某某区某某小区c座 |
| |
| b = data.loc["女", '语文'] |
| print(b) |
output
| 性别 |
| 女 61 |
| 女 69 |
| 女 58 |
| Name: 语文, dtype: int64 |
| |
| b = data.loc['男', ['语文', '数学']] |
| print(b) |
output
| 语文 数学 |
| 性别 |
| 男 64 49 |
| 男 47 44 |
| 男 37 63 |
| |
| |
| b = data.loc[:, ['语文', '数学']] |
| print(b) |
output
| 语文 数学 |
| 性别 |
| 男 64 49 |
| 女 61 61 |
| 女 69 44 |
| 男 47 44 |
| 男 37 63 |
| 女 58 49 |
| |
| |
| b = data.loc[:, '姓名':'英语'] |
| print(b) |
output
| 姓名 语文 数学 英语 |
| 性别 |
| 男 卢海军 64 49 49 |
| 女 丁智敏 61 61 60 |
| 女 张伊 69 44 58 |
| 男 王松 47 44 62 |
| 男 王刚 37 63 42 |
| 女 李平平 58 49 33 |
| |
| # 显示性别为男的记录 |
| b = data['性别'] == '男' |
| c = data.loc[b] |
| print(c) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| # 查询语文成绩大于60的记录 |
| b = data['语文'] > 60 |
| c = data.loc[b] |
| print(c) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-01-05 1 卢海军 男 64 49 49 162 上海市某某区某某小区A座 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| 1987-02-06 4 张伊 女 69 44 58 171 河南省信阳市某某区某某小区C座 |
| # 查询语文成绩大于60并且数学成绩大于60 |
| # 多条件的时候,每个条件都需要用()括起来 |
| b = (data['语文'] > 60) & (data['数学'] > 60) |
| c = data[b] |
| print(c) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1983-10-27 2 丁智敏 女 61 61 60 182 冀州市某某区某某小区a座 |
| # 显示姓名包含平 |
| b = data['姓名'].str.contains('平') |
| c = data.loc[b] |
| print(c) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1994-01-07 3 李平平 女 58 49 33 140 襄阳市某某区某某小区c座 |
| |
| # 显示姓王 |
| b = data['姓名'].str.startswith('王') |
| c = data.loc[b] |
| print(c) |
output
| 序号 姓名 性别 语文 数学 英语 总分 地址 |
| 出生日期 |
| 1987-03-06 6 王松 男 47 44 62 153 襄阳市某某区某某小区F座 |
| 1989-07-08 5 王刚 男 37 63 42 142 信阳市某某区某某小区B座 |
| # 性别为男的记录 |
| data1 = data[data.性别 == '男'][['语文', '数学']] |
| print(data1) |
output
| 语文 数学 |
| 序号 |
| 1 64 49 |
| 5 37 63 |
| 6 47 44 |
| |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 姓名 性别 出生日期 语文 数学 英语 总分 地址 |
| 0 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 |
| 1 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 |
| 2 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 |
| 3 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 |
| 4 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 |
| 5 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 |
| # 通过条件新增加一列 |
| # 方式1 |
| b = data.性别 == '男' |
| data.loc[b, '称呼'] = '先生' |
| b = data.性别 == '女' |
| data.loc[b, '称呼'] = '女士' |
| print(data) |
output
| 序号 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 0 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| 1 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 女士 |
| 2 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 女士 |
| 3 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 女士 |
| 4 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 先生 |
| 5 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 先生 |
| |
| data['称呼'] = data['性别'].apply(lambda a: '先生' if a == '男' else '女士') |
| print(data) |
output
| 序号 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 0 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| 1 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 女士 |
| 2 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 女士 |
| 3 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 女士 |
| 4 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 先生 |
| 5 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 先生 |
| |
| |
| data1 = data.query("性别=='男'") |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 先生 |
| 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 先生 |
| |
| data1 = data.query("语文 > 60") |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| 2 丁智敏 女 1983-10-27 61 61 60 182 冀州市某某区某某小区a座 女士 |
| 4 张伊 女 1987-02-06 69 44 58 171 河南省信阳市某某区某某小区C座 女士 |
| # 性别为男,并且语文大于60 |
| # b = "性别 == '男' and 语文 > 60" |
| b = "性别 == '男' & 语文 > 60" |
| data1 = data.query(b) |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| # 性别为男或者语文大于60 |
| # b = "性别 == '男' or 语文 > 60" |
| b = "性别 == '男' | 语文 > 60" |
| data1 = data.query(b) |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 1 卢海军 男 1983-01-05 64 49 49 162 上海市某某区某某小区A座 先生 |
| # 查询姓名是王开头的 |
| b = "姓名.str.startswith('王')" |
| data1 = data.query(b) |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 先生 |
| 6 王松 男 1987-03-06 47 44 62 153 襄阳市某某区某某小区F座 先生 |
| # 姓名是王刚和李平平信息 |
| # b = "姓名=='王刚' | 姓名=='李平平'" |
| b = "姓名 in ['王刚','李平平']" |
| data1 = data.query(b) |
| print(data1) |
output
| 姓名 性别 出生日期 语文 数学 英语 总分 地址 称呼 |
| 序号 |
| 3 李平平 女 1994-01-07 58 49 33 140 襄阳市某某区某某小区c座 女士 |
| 5 王刚 男 1989-07-08 37 63 42 142 信阳市某某区某某小区B座 先生 |
删除数据行
| path = r"C:\work\python\pandas_files\删除.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 姓名 语文 数学 英语 |
| 0 1 丁智敏 35.0 57.0 43.0 |
| 1 2 李平平 NaN NaN NaN |
| 2 3 王刚 NaN 67.0 55.0 |
| 3 4 王松 49.0 36.0 54.0 |
| 4 5 卢海军 NaN NaN NaN |
| 5 6 张伊 38.0 56.0 36.0 |
| 6 7 张荣耀 51.0 NaN 65.0 |
| 7 8 王夏卓 35.0 51.0 43.0 |
| 8 9 杨赛 66.0 64.0 34.0 |
| 9 10 马志理 52.0 51.0 66.0 |
| # 删除索引为2的行 |
| data = data.drop(2) |
| print(data) |
output
| 序号 姓名 语文 数学 英语 |
| 0 1 丁智敏 35.0 57.0 43.0 |
| 1 2 李平平 NaN NaN NaN |
| 3 4 王松 49.0 36.0 54.0 |
| 4 5 卢海军 NaN NaN NaN |
| 5 6 张伊 38.0 56.0 36.0 |
| 6 7 张荣耀 51.0 NaN 65.0 |
| 7 8 王夏卓 35.0 51.0 43.0 |
| 8 9 杨赛 66.0 64.0 34.0 |
| 9 10 马志理 52.0 51.0 66.0 |
| # 删除索引1和3的行数据 |
| data = data.drop(labels=[1, 3]) |
| print(data) |
output
| 序号 姓名 语文 数学 英语 |
| 0 1 丁智敏 35.0 57.0 43.0 |
| 2 3 王刚 NaN 67.0 55.0 |
| 4 5 卢海军 NaN NaN NaN |
| 5 6 张伊 38.0 56.0 36.0 |
| 6 7 张荣耀 51.0 NaN 65.0 |
| 7 8 王夏卓 35.0 51.0 43.0 |
| 8 9 杨赛 66.0 64.0 34.0 |
| 9 10 马志理 52.0 51.0 66.0 |
| # 删除语文列 |
| data = data.drop('语文', axis=1) |
| print(data) |
output
| 序号 姓名 数学 英语 |
| 0 1 丁智敏 57.0 43.0 |
| 1 2 李平平 NaN NaN |
| 2 3 王刚 67.0 55.0 |
| 3 4 王松 36.0 54.0 |
| 4 5 卢海军 NaN NaN |
| 5 6 张伊 56.0 36.0 |
| 6 7 张荣耀 NaN 65.0 |
| 7 8 王夏卓 51.0 43.0 |
| 8 9 杨赛 64.0 34.0 |
| 9 10 马志理 51.0 66.0 |
| # 删除语文\数学两列 |
| data = data.drop(['语文', '数学'], axis=1) |
| print(data) |
output
| 序号 姓名 英语 |
| 0 1 丁智敏 43.0 |
| 1 2 李平平 NaN |
| 2 3 王刚 55.0 |
| 3 4 王松 54.0 |
| 4 5 卢海军 NaN |
| 5 6 张伊 36.0 |
| 6 7 张荣耀 65.0 |
| 7 8 王夏卓 43.0 |
| 8 9 杨赛 34.0 |
| 9 10 马志理 66.0 |
删除重复值
| path = r"C:\work\python\pandas_files\去重.xlsx" |
| data = pd.read_excel(path) |
| print(data) |
output
| 序号 姓名 性别 分数 |
| 0 1 杨过 男 90 |
| 1 2 杨过 男 89 |
| 2 3 小龙女 女 93 |
| 3 4 小龙女 女 91 |
| 4 5 张三丰 男 88 |
| 5 6 郭靖 男 87 |
| 6 7 郭靖 男 90 |
| 7 8 张无忌 男 89 |
| # 查看是否有重复值,获取重复的数量 |
| data1 = data['姓名'].value_counts() |
| print(data1) |
output
| 姓名 |
| 杨过 2 |
| 小龙女 2 |
| 郭靖 2 |
| 张三丰 1 |
| 张无忌 1 |
| Name: count, dtype: int64 |
| # 去除姓名列的重复值,保留第一个数据 |
| data1 = data.drop_duplicates(subset='姓名') |
| print(data1) |
output
| 序号 姓名 性别 分数 |
| 0 1 杨过 男 90 |
| 2 3 小龙女 女 93 |
| 4 5 张三丰 男 88 |
| 5 6 郭靖 男 87 |
| 7 8 张无忌 男 89 |
| |
| data1 = data.drop_duplicates(subset=['姓名', '性别']) |
| print(data1) |
output
| 序号 姓名 性别 分数 |
| 0 1 杨过 男 90 |
| 2 3 小龙女 女 93 |
| 4 5 张三丰 男 88 |
| 5 6 郭靖 男 87 |
| 7 8 张无忌 男 89 |
| |
| data1 = data.drop_duplicates(subset='姓名', keep="last") |
| print(data1) |
output
| 序号 姓名 性别 分数 |
| 1 2 杨过 男 89 |
| 3 4 小龙女 女 91 |
| 4 5 张三丰 男 88 |
| 6 7 郭靖 男 90 |
| 7 8 张无忌 男 89 |
| # 按照姓名去重,一个都不留 |
| data1 = data.drop_duplicates(subset='姓名', keep=False) |
| print(data1) |
output
| 序号 姓名 性别 分数 |
| 4 5 张三丰 男 88 |
| 7 8 张无忌 男 89 |
| # 取出重复值 |
| # 重复的值显示为True,没有重复的显示为False |
| tj = data.duplicated(subset='姓名') |
| print(data[tj]) |
output
| 序号 姓名 性别 分数 |
| 1 2 杨过 男 89 |
| 3 4 小龙女 女 91 |
| 6 7 郭靖 男 90 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-04-07 eclipse使用