1. 建立一个dataframe如下:

# 导入包
import pandas as pd
# 建立一个字典
data_dict = { 'id':['001','002','003','004','005'],
                'Fruits':['Apple','Banana','Cherry','Dates','Eggfruit'],
                'Quantity': [5, 10, 8, 3, 7],  
                 'Price':[2,2.5,2,4,1.5],
                'Color': ['Red', 'Yellow', 'Red', 'Brown', 'Yellow']}
# 将字典转变为dataframe格式
df =pd.DataFrame(data_dict)
df

Python的dataframe删除一列 python删除dataframe特定列_浮点型


注意:

  1. 在这个dataframe中id不是索引
  2. 在子典中Price的值为一个list,有整型也有浮点型,由于python是动态数据类型,这时候list中数据类型都会向上转换,都变为浮点型

2.为dataframe增加一列新数据:

# 新增一列总价Quantity*Price
df['Amount'] = df['Quantity'] * df['Price'] # 神奇不,竟然可以直接相乘
df

Python的dataframe删除一列 python删除dataframe特定列_索引_02

接下来进入正题:
3. 删除指定行:

# 删除索引为1的行
dftest = df.drop(1, axis=0)
dftest

Python的dataframe删除一列 python删除dataframe特定列_数据类型_03

# 或者使用index
dftest = df.drop(index = 1)  # axis = 0可以不写,drop函数默认是0
dftest

Python的dataframe删除一列 python删除dataframe特定列_数据类型_04

# 删除多个索引,1和2的行
dftest = df.drop([1,2],axis = 0)
dftest

Python的dataframe删除一列 python删除dataframe特定列_python_05

# 使用index删除多个索引1和2的行
dftest = df.drop(index = [1,2])  
dftest

Python的dataframe删除一列 python删除dataframe特定列_数据类型_06


4. 删除指定列:

# 删除Color列
dftest = df.drop('Color',axis = 1)  # axis = 1表示删除列,不可省略
dftest

Python的dataframe删除一列 python删除dataframe特定列_浮点型_07

# 删除Color和id列
dftest = df.drop(['id','Color'],axis = 1)  
dftest

Python的dataframe删除一列 python删除dataframe特定列_python_08


4.删除指定列:

# 通过columns指定列名删除
dftest = df.drop(columns='Color')
dftest

Python的dataframe删除一列 python删除dataframe特定列_索引_09

# 通过columns指定列名删除多个列'id'和'Color'
dftest = df.drop(columns=['id','Color'])
dftest

Python的dataframe删除一列 python删除dataframe特定列_python_10


以上是基础,可是在实际运用过程中可没有这么简单啊5. 如果想要根据某一列的某个值来删除一些行:

先再来看一下我们的dataframe长什么样子:

Python的dataframe删除一列 python删除dataframe特定列_索引_11


Python的dataframe删除一列 python删除dataframe特定列_python_12


删除id为001,004,005的所有行要怎么做呢?

我在实际运用dataframe的时候要从一个大的dataframe中删除指定的一些id,当时的是弄了好久才把代码写出来弄出来,后面发现其实有很简单的方法呀,写这个帖子就为了纪念我那个问题。

负的isin()索引:
~,键盘上tab键上面的一个键,在python中表示负,反的意思
.loc()表示选取datafram的行
这个链接写了.loc()和.iloc()的一些用法和区别

# 将要删除的id好弄成一个list
droplist = ['001','004','005']
# 选出df中id不在droplist中的行
# id在droplist中的,然后取负,表示不在里面的
dftest = df.loc[~df.id.isin(droplist)] 
dftest

Python的dataframe删除一列 python删除dataframe特定列_浮点型_13


query:

dftest = df.query('@droplist not in id') # 查找droplist不在id中的
dftest

Python的dataframe删除一列 python删除dataframe特定列_浮点型_14