[Python] Pandas的delete、drop函数的用法
drop函数
DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
这是drop函数的所有参数
- labels是指要删除的标签,一个或者是列表形式的多个;
- axis是指处哪一个轴;
- columns是指某一列或者多列;
- level是指等级,针对多重索引的情况;
- inplaces是否替换原来的dataframe;
具体更详细的可以参阅官网:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html
Axis(轴)含义
axis=0指的是逐行,axis=1指的是逐列。
>>> import pandas as pd
>>> df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1", "col2", "col3", "col4"])
>>> print(df.mean(axis=0))
col1 2.0
col2 2.0
col3 2.0
col4 2.0
dtype: float64
>>> print(df.mean(axis=1))
0 1.0
1 2.0
2 3.0
dtype: float64
>>> print(df.drop(0,axis=0))
col1 col2 col3 col4
1 2 2 2 2
2 3 3 3 3
>>> print(df.drop(['col1'],axis=1))
col2 col3 col4
0 1 1 1
1 2 2 2
2 3 3 3
根据结果:
mean(axis=0)计算的是每一列平均值,
mean(axis=1)计算的是每一行平均值。
drop(0,axis=0)删除行,
drop([‘col1’],axis=1)删除列。
drop用法实验
>>> df = pd.DataFrame(np.arange(12).reshape(3,4),
... columns=['A', 'B', 'C', 'D'])
>>> df
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
#指定删除相关的列,没有带columns,所以要指出是哪个轴上的
>>> df.drop(['B', 'C'], axis=1)
A D
0 0 3
1 4 7
2 8 11
#这里带有columns,所以不用加上axis参数
>>> df.drop(columns=['B', 'C'])
A D
0 0 3
1 4 7
2 8 11
#删除指定索引的行,这里没有axis参数,就是默认axis=0,也就是删除行
>>> df.drop([0, 1])
A B C D
2 8 9 10 11
#多重索引的情况,因为版本问题,有些版本需要把里面的codes改成labels
>>> midx = pd.MultiIndex(levels=[['lama', 'cow', 'falcon'],
... ['speed', 'weight', 'length']],
... codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
... [0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> df = pd.DataFrame(index=midx, columns=['big', 'small'],
... data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
... [250, 150], [1.5, 0.8], [320, 250],
... [1, 0.8], [0.3,0.2]])
>>> df
big small
lama speed 45.0 30.0
weight 200.0 100.0
length 1.5 1.0
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
weight 1.0 0.8
length 0.3 0.2
>>> df.drop(index='cow', columns='small')
big
lama speed 45.0
weight 200.0
length 1.5
falcon speed 320.0
weight 1.0
length 0.3
>>> df.drop(index='length', level=1)
big small
lama speed 45.0 30.0
weight 200.0 100.0
cow speed 30.0 20.0
weight 250.0 150.0
falcon speed 320.0 250.0
weight 1.0 0.8
#我这里不加index参数是因为我的版本加上以后会报错,所以在使用时建议先了解一下版本
df.drop('length', level=0)
big small
lama speed 45.0 30.0
weight 200.0 100.0
length 1.5 1.0
cow speed 30.0 20.0
weight 250.0 150.0
length 1.5 0.8
falcon speed 320.0 250.0
weight 1.0 0.8
length 0.3 0.2
delete函数
具体的用法如下:
del df['A'] # 删除A列,会就地修改
另外,可能drop函数相关的函数还有一些dropna()和drop_duplicated()函数,暂不总结了
附记:在茫茫的信息海洋中,遇到就是有缘,期待回复交流,为缘分留下痕迹……
分类:
数据AI
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析