Python3 定义DataFrame,删除其中某一或多个行列

部署运行你感兴趣的模型镜像

win10截屏快捷键

键盘:Win+Shift+S
粘贴:Ctrl+V

创建一个DataFrame变量

定义一个空的

import pandas as pd
df = pd.DataFrame()

自定义数据

代码:

import pandas as pd
#所有的列都显示
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#定义
df = pd.DataFrame({'A':[1,2,3,4],'B':[1,2,3,4],'C':[1,2,3,4],'D':[1,2,3,4]})
#输出
print(df)

输出:

df 自定义输出结果

读取excel文件数据

代码:

import pandas as pd
#所有的列都显示
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
path="D:\\Users\\ky\\Desktop\\20201201.xlsx"
sheetname = "Line"
#读取excel用read_excel方法
df = pd.read_excel(path, sheet_name=sheetname)
rows_num = df.shape[0]
columns_num = df.shape[1]
#切块
block1 = df.iloc[9:rows_num,3:columns_num]
last_row_num = block1.shape[0] + 8
del block1
column_B = 2 - 1
#不知道为什么16就是显示到16,不需要减
column_P = 16
row_nine = 9 - 2
block1 = df.iloc[row_nine:last_row_num,column_B:column_P]
print(block1)
del df
df = block1
print(df)

删除(方法:drop)

文字说明:

drop(labels, axis=0, inplace=True)

具体参数说明(用到部分说明)

参数名内容具体说明有无默认
labelsstring或者array;删除的行或列的标签。无默认
axis0 或 1轴向(0表示行,1表示列)0
inplaceboolean类型是否修改源数据False

删除列

方法一:用列名

1、df.drop(columns=[‘column_name’],axis=1,inplace=True)
2、df.drop([‘column_name’],1,True)

举例:
#column_name为待删列的列名,data本身是不会有变化的!
#df.drop(columns=['column_name'],axis=1)
#需要赋值(赋值给新的不会破坏源数据
#df2=df.drop(columns=['bodyType'],axis=1)
#加了inplace=True	df本身就会有变化了,
df.drop(columns=['A'],axis=1,inplace=True)
结果

删除A列

方法二:不用列名

举例:
#循环连续删除几列,这里6不用变(6删除的是第7列)
#range(1,2+1)	循环的是1到8
for column_no in range(1,2+1):
	#print(column_no)
	#print("删除"+str(column_no)+"之后")
	df.drop(df.columns[[1]],axis=1,inplace=True)
print(df)
结果:

说明:1 删除的B列,连续删除两列
在这里插入图片描述

删除行

方法一:用索引

举例1:
import pandas as pd
#所有的列都显示
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#定义
df = pd.DataFrame({'A':[1,2,3,4],'B':[1,2,3,4],'C':[1,2,3,4],'D':[1,2,3,4]})
print("源数据:")
print(df)
#修改行索引
df.rename({0:'a',1:'b',2:'c',3:'d'},inplace=True)
print("修改行索引后:")
print(df)
df.drop(labels='b',axis=0,inplace=True)
print("删除b后:")
print(df)
结果:

在这里插入图片描述

举例2:
listRowRemove = [1,2]
#listRowRemove存入的是所有需要删除的行索引组成的list
#定义一个空的list的方法是:listRowRemove=list()
#list类型添加listRowRemove.append(row[0])
for item in listRowRemove:
		#按行循环df,row是一行的数据
		#row[0]:行索引
		#row[1]:获取该行全部字段
        for row in df.iterrows():
            if row[0] == item:
                df = df.drop(row[0])
print(df)
结果:

在这里插入图片描述

方法二:不用索引

举例:
import pandas as pd
#所有的列都显示
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#定义
df = pd.DataFrame({'A':[1,2,3,4],'B':[1,2,3,4],'C':[1,2,3,4],'D':[1,2,3,4]})
print("源数据:")
print(df)
df.rename({0:'a',1:'b',2:'c',3:'d'},inplace=True)
#修改行索引
print("修改行索引后:")
print(df)
#不按照索引删除
df.drop(df.index[[1]],axis=0,inplace=True)
print("删除第1行后(从0开始计算的):")
print(df)
结果:

在这里插入图片描述

删除列和行组合使用

举例:

row=1
for column_no in range(1,3):
    print("删除列:"+str(column_no))
    #labels代表删除的行或者列的标签(索引)
    df.drop(labels=row,axis=0,inplace=True)
    print(df)
    row=row+1
    print("删除行:"+str(row))
    #inplace是否对源数据生效
    #按序号删除
    df.drop(df.columns[[1]],axis=1,inplace=True)
    print(df)

结果:

在这里插入图片描述

错误提示

index 1 is out of bounds for axis 0 with size 1

解决方案:

可能是循环超过了范围,range里面超过了也会提示

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝丶曦月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值