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
注意:
- 在这个dataframe中id不是索引
- 在子典中Price的值为一个list,有整型也有浮点型,由于python是动态数据类型,这时候list中数据类型都会向上转换,都变为浮点型
2.为dataframe增加一列新数据:
# 新增一列总价Quantity*Price
df['Amount'] = df['Quantity'] * df['Price'] # 神奇不,竟然可以直接相乘
df
接下来进入正题:
3. 删除指定行:
# 删除索引为1的行
dftest = df.drop(1, axis=0)
dftest
# 或者使用index
dftest = df.drop(index = 1) # axis = 0可以不写,drop函数默认是0
dftest
# 删除多个索引,1和2的行
dftest = df.drop([1,2],axis = 0)
dftest
# 使用index删除多个索引1和2的行
dftest = df.drop(index = [1,2])
dftest
4. 删除指定列:
# 删除Color列
dftest = df.drop('Color',axis = 1) # axis = 1表示删除列,不可省略
dftest
# 删除Color和id列
dftest = df.drop(['id','Color'],axis = 1)
dftest
4.删除指定列:
# 通过columns指定列名删除
dftest = df.drop(columns='Color')
dftest
# 通过columns指定列名删除多个列'id'和'Color'
dftest = df.drop(columns=['id','Color'])
dftest
以上是基础,可是在实际运用过程中可没有这么简单啊5. 如果想要根据某一列的某个值来删除一些行:
先再来看一下我们的dataframe长什么样子:


删除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
query:
dftest = df.query('@droplist not in id') # 查找droplist不在id中的
dftest
















