Pandas高级数据分析快速入门之数据编辑——删除行与列
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas高级数据分析快速入门之数据编辑——删除行与列相关的知识,希望对你有一定的参考价值。
在高级数据分析过程中,数据删除操作也是常用的数据编辑操作。本文总结了常用的行、列数据删除操作快速入门方法。
首先,读取Excel或csv文件,用于演练删除操作。
import pandas as pd
df = pd.read_excel('sport.xlsx')
df
id | name | age | Gender | sport | |
---|---|---|---|---|---|
0 | 1001.0 | 董国建 | 34.000000 | 男 | 马拉松 |
1 | 1002.0 | 苏炳添 | 31.000000 | 男 | 百米 |
2 | 1003.0 | 彭建华 | 24.000000 | 男 | 马拉松 |
3 | 1004.0 | 张德顺 | 25.000000 | 女 | 马拉松 |
4 | 1005.0 | 焦安静 | 25.000000 | 女 | 马拉松 |
5 | 1006.0 | 葛曼棋 | 24.000000 | 女 | 百米 |
6 | NaN | 6 | 27.166667 | NaN | NaN |
1. 删除行
1.1. 按行索引删除行数据
df = df.drop(6) #删除index==6
df
id | name | age | Gender | sport | |
---|---|---|---|---|---|
0 | 1001.0 | 董国建 | 34.0 | 男 | 马拉松 |
1 | 1002.0 | 苏炳添 | 31.0 | 男 | 百米 |
2 | 1003.0 | 彭建华 | 24.0 | 男 | 马拉松 |
3 | 1004.0 | 张德顺 | 25.0 | 女 | 马拉松 |
4 | 1005.0 | 焦安静 | 25.0 | 女 | 马拉松 |
5 | 1006.0 | 葛曼棋 | 24.0 | 女 | 百米 |
1.2. 分组删除最后一行数据
df = df.groupby('sport', as_index=False).apply(lambda x: x.iloc[:-1]).reset_index(drop=True)
df
id | name | age | Gender | sport | |
---|---|---|---|---|---|
0 | 1002.0 | 苏炳添 | 31.0 | 男 | 百米 |
1 | 1001.0 | 董国建 | 34.0 | 男 | 马拉松 |
2 | 1003.0 | 彭建华 | 24.0 | 男 | 马拉松 |
3 | 1004.0 | 张德顺 | 25.0 | 女 | 马拉松 |
同理,分组删除首行。
df = df.groupby('sport', as_index=False).apply(lambda x: x.iloc[1:]).reset_index(drop=True)
1.3. 按条件查询删除行数据
df = df.drop(df.loc[df['name']=='董国建'].index).reset_index(drop=True)
df
id | name | age | Gender | sport | |
---|---|---|---|---|---|
0 | 1002.0 | 苏炳添 | 31.0 | 男 | 百米 |
1 | 1003.0 | 彭建华 | 24.0 | 男 | 马拉松 |
2 | 1004.0 | 张德顺 | 25.0 | 女 | 马拉松 |
1.4. 按多个行索引删除多行
df = df.drop(index=[0,2])
df
id | name | age | Gender | sport | |
---|---|---|---|---|---|
1 | 1003.0 | 彭建华 | 24.0 | 男 | 马拉松 |
1.5. 按行范围删除
k = df.loc[df['name']=='彭建华'].index
df = df.drop(range(k[0],4))
2. 删除列
2.1. 方法一:drop
df = df.drop(['id'],axis=1)
df
name | age | Gender | sport | |
---|---|---|---|---|
0 | 葛曼棋 | 24.0 | 女 | 百米 |
1 | 彭建华 | 24.0 | 男 | 马拉松 |
2 | 张德顺 | 25.0 | 女 | 马拉松 |
3 | 焦安静 | 25.0 | 女 | 马拉松 |
或者,可以如下:
df = df.drop(columns=['age','Gender'])
2.2. 方法二:del
del df['name']
df
age | Gender | sport | |
---|---|---|---|
0 | 24.0 | 女 | 百米 |
1 | 24.0 | 男 | 马拉松 |
2 | 25.0 | 女 | 马拉松 |
3 | 25.0 | 女 | 马拉松 |
3. 总结
3.1. drop方法的用法
drop(labels, axis=0, =None, inplace=False, errors=‘raise’)
参数名称 | 说明 |
---|---|
labels | 删除索或列标签 |
axis | axis为0时表示删除行,axis为1时表示删除列,默认为0 |
labels | 用于多层索引,代表层级 |
inplace | 默认为False,设置是否替换原始数据,True为替换 |
3.2. 依赖切片操作
关于切片操作,请自行参考相关文档,或者,关注后续博文。
以上是关于Pandas高级数据分析快速入门之数据编辑——删除行与列的主要内容,如果未能解决你的问题,请参考以下文章