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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务