pandas每天一题-题目15:删除列的多种方式
这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从基础到进阶,可以检验你有多么了解 pandas。
我会挑选一些题目,并且提供比原题库更多的解决方法以及更详尽的解析。
计划每天更新一期,希望各位小伙伴先自行思考,再查看答案。如果对你有帮助,记得转发推荐给你的好友!
后台回复"数据",可以下载本题数据集
如下数据:
import pandas as pd
import numpy as np
df = pd.read_csv('chipotle.tsv',
sep='\t',
converters={'item_price': lambda x: float(x[1:-1])})
前面章节讲解过的知识点,本文不再讲解!
需求:各种删除列的方式
下面是答案了
方式1
这是 python 删除变量的操作,同样适用于 DataFrame 删除列:
del df['order_id']
df
也可以同时删除多列:
del df['order_id'],df['quantity']
df
点评:
这种方式最大的缺点是修改了原数据
方式2
为了克服方式1的缺点(修改原数据),可以使用 drop 方法:
df.drop('order_id',axis=1)
- 方法直接返回删除列后的新表格(DataFrame)
- 参数 axis=1,表示删除列。axis=0,可以删除行
删除多列当然也是可以:
df.drop(['order_id','quantity'],axis=1)
点评:
- 不会修改原数据,适合临时操作
方式3
在方式1中,如果我们希望提出 order_id 列,然后从表格中移除,我们需要这么做:
ids = df['order_id']
del df['order_id']
# …………后续对 ids 操作
注意,你不能写 del ids,此时会把变量 ids 给删除了
此时代码出现了 "order_id" 2次。
pandas 为此提供了一个方法直接完成2个操作:
ids = df.pop('order_id')
- pop 方法会提取指定列并返回,然后从 df 中移除这一列
- 这与方式1一样是会修改原数据
点评:
此方法没啥大作用,不推荐使用
更多 pandas 高级应用教程,请订阅我的 pandas 专栏:
推荐阅读: