DataFrame 结构df基本指令
前言
先把excel文件导入,然后用pandas读取df
import pandas as pd import os # 1. 读取Excel文件 file_path = input(f"请输入输出excel文件名: ").strip() # 添加.xlsx扩展名(如果没有) if not file_path.lower().endswith('.xlsx'): file_path += '.xlsx' df = pd.read_excel(file_path)
一、DataFrame创建(excel里面用不到感觉,先省略)
二、查询
@df直接查询
1.df查询一列
names = df['Name'].tolist() print(names) #输出 ['Jack', 'Tom', 'Lucy']
.tolist()
是输出格式,如图,前者是加这个的输出,后者是不加的输出
2.查询多列
names = df[['Name','Age']] print(names) #输出 Name Age 0 Jack 10 1 Tom 12 2 Lucy 13
3.条件查询
ages = df[(df['Age'] > 10) & (df['Age'] < 13)] print(ages) #输出 Name Age 1 Tom 12
@query()方法
1.条件查询
result = df.query('Age > 10 & Age < 13') print(result) #输出 Name Age 1 Tom 12
2.带有变量的查询
names = ['Tom', 'Lily', 'Sam'] result = df.query('Name not in @names') print(result) #输出 Name Age 0 Jack 10 2 Lucy 13
@查询行索引值
例如我现在想查Name字段为Tom的行索引:
print(df) index = df[df['Name'] == "Tom"].index.tolist()[0] # 查询索引 print("Tom所在行的索引:", index) #输出 Name Age 0 Jack 10 1 Tom 12 2 Lucy 13 Tom所在行的索引: 1
@模糊查询(必须是字符串)
例如我想对Sdate字段进行模糊查询,查询2023年的数据:
data = [['20201001', 10], ['20201002', 12], ['20201003', 13],['20231003', 13]] columns = ['Sdate', 'type'] df = pd.DataFrame(data, columns=columns) df = df[df['Sdate'].str.contains('2023')] # 模糊查询 print(df) #输出 Sdate type 3 20231003 13
三、增加
1.增加列
直接加:加在最后一列新的一行
df['Gender'] = ['M', 'M', 'F'] print(df) #输出 Name Age Gender 0 Jack 10 M 1 Tom 12 M 2 Lucy 13 F
insert方法:可以指定位置插入
df.insert(0, 'Gender', ['M', 'M', 'F']) print(df) #输出 Gender Name Age 0 M Jack 10 1 M Tom 12 2 F Lucy 13
2.增加行
1.local函数增加一行
df.loc[len(df.index)] = ('Lily', 20)#len(df.index)和len(df)一样,获取行数,这里表示是在最后一行添加新的 #其原理是赋值,注意如果不增加新的行,会覆盖数据 print(df) #输出 Name Age 0 Jack 10 1 Tom 12 2 Lucy 13 3 Lily 20
2.增加多行
data1 = [['Lily', 23], ['Sam', 35]] columns1 = ['Name', 'Age'] df1 = pd.DataFrame(data1, columns=columns1) df2 = pd.concat([df, df1], ignore_index=True) print(df2) #输出 Name Age 0 Lily 23.0 1 Sam 35.0 2 Lucy 13.0
3.更新某个值
1.通过顺序数字索引
df.iloc[0, 1] = 25 # 0表示按顺序数的第一行,1表示第二列 print(df) #输出 Name Age 0 Jack 25 1 Tom 12 2 Lucy 13
iloc(位置索引)
2.通过实际设置的索引来修改
df.loc[0, 'Age'] = 25 # 0表示索引等于0的那一行 print(df) #输出 Name Age 0 Jack 25 1 Tom 12 2 Lucy 13
loc(标签索引)
四、删除
1.删除行
df = df.drop(df[(df['Age'] > 10) & (df['Age'] < 13)].index) print(df) #输出 Name Age 0 Jack 10 2 Lucy 13
2.删除列
df = df.drop('Age', axis=1) print(df) #输出 Name 0 Jack 1 Tom 2 Lucy
注意:
drop()
方法用于删除指定索引的行或列。axis=0
(默认)表示删除行,axis=1
表示删除列。.index 索引的意思
- labels:要删除的行或列,用列表给出
- axis:默认为0,指要删除的是行,删除列时需指定axis为1
- index :直接指定要删除的行,删除多行可以使用列表作为参数
- columns:直接指定要删除的列,删除多列可以使用列表作为参数
- inplace: 默认为False,该删除操作不改变原数据;inplace = True时,改变原数据
用Python玩转EXCEL 文章被收录于专栏
本文用vscode