删除 2018/12/14
函数:
s.drop(labels=None) # 删除系列指定标签;原数据不变
df.drop(labels=None, axis=0, index=None, columns=None,
level=None, inplace=False, errors='raise')# 按轴从行或列中删除指定的标签;原数据不变
参数:
labels=None:单标签或标签列表#要删除的索引或列标签;同时指定axis
axis=0:{0或'index',1或'columns'}
# 是否从索引0或'index'或列(1或'columns')中删除标签。
index,columns:单个标签或类似列表
# 指定轴的替代方法等价labels, axis=1columns=labels
level:int或level name#MultiIndex,将从中删除标签的级别。
inplace=False:为True则进行就地操作并返回None。
errors ='raise': {'ignore', 'raise'}# ignore禁止错误,仅删除现有标签
返回:DataFrame
序列删除:
del s['d'] #序列删除;原数据改变 # del s1.d #错误用法
s.pop('d') #弹出;参数必须为标签str;原数据改变
s.drop('d') #删除数据‘d' ; 原数据不变
s.drop(['c','d']) #删除数据‘'c',d'
数据帧删除:
df=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],index=['a','b','c'],columns=['A','B','C'])
#删除列
del df['B'] # 数据帧删除;原数据改变
df.pop('B') # 列弹出;原数据改变
df.drop(['A','B'],axis=1) #删除列; 原数据不变
df.drop(columns=['A','B'])#删除列; 原数据不变
df.drop(['a','b']) #通过索引删除行; 原数据不变 df.drop([0, 1])
df.drop(index=['a','b']) #通过索引删除行; 原数据不变
多索引删除:
midx = pd.MultiIndex(levels=[['Tom', 'Bob', 'Jam'], ['ss1', 'ss2', 'ss3']],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2],[0, 1, 2, 0, 1, 2, 0, 1, 2]],names=['name','item'])#创建多索引
df = pd.DataFrame(index=midx, columns=['min','v', 'max'],
data=[ [11,12,13],[21,22,23], [31,32,33], #Tom收入,体重,身高
[14,15,16],[24,25,26], [34,35,36], # Bob收入,体重,身高
[17,18,19],[27,28,29], [37,38,39]])# Jam收入,体重,身高
df
min v max
name item
Tom ss1 11 12 13
ss2 21 22 23
ss3 31 32 33
Bob ss1 14 15 16
ss2 24 25 26
ss3 34 35 36
Jam ss1 17 18 19
ss2 27 28 29
ss3 37 38 39
df.drop(index='Bob', columns='min')#删除索引Bob和列min
v max
name item
Tom ss1 12 13
ss2 22 23
ss3 32 33
Jam ss1 18 19
ss2 28 29
ss3 38 39
df.drop(index='Tom', level=0)
df.drop(index='Tom', level='name')
min v max
name item
Bob ss1 14 15 16
ss2 24 25 26
ss3 34 35 36
Jam ss1 17 18 19
ss2 27 28 29
ss3 37 38 39
df.drop(index='ss3', level=1)
df.drop(index='ss3', level='item')
min v max
name item
Tom ss1 11 12 13
ss2 21 22 23
Bob ss1 14 15 16
ss2 24 25 26
Jam ss1 17 18 19
ss2 27 28 29