5.2.2 从行/列删除要素
如果你以经拥有索引数组或不含条目的列表,在轴向上删除一个或更多个条目就非常容易。但这样需要一些数据和操作逻辑。通常会使用drop
。具体操作如下。
首先是Series
In [39]: obj=pd.Series(np.arange(5.),index=['a','b','c','d','e'])
In [40]: obj
Out[40]:
a 0.0
b 1.0
c 2.0
d 3.0
e 4.0
dtype: float64
In [41]: new_obj=obj.drop('c')
In [42]: new_obj
Out[42]:
a 0.0
b 1.0
d 3.0
e 4.0
dtype: float64
In [43]: obj.drop(['d','c'])
Out[43]:
a 0.0
b 1.0
e 4.0
dtype: float64
然后是DataFrame
索引值可以从轴向上删除。为了表明这个特性,我们可以创建一个DataFrame:
In [44]: data=pd.DataFrame(np.arange(16).reshape((4,4)),
...: index=['Ohio','Colorado','Utah','New York'],
...: columns=['one','two','three','four'])
In [45]: data
Out[45]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
在调用drop时使用标签序列会根据行标签删除值(轴0):
In [46]: data.drop(['Colorado','Ohio'])
Out[46]:
one two three four
Utah 8 9 10 11
New York 12 13 14 15
可以通过定义axis=1或axis='colums'
来删除列,不定义axis会报错。
In [47]: data.drop('two',axis=1)
Out[47]:
one three four
Ohio 0 2 3
Colorado 4 6 7
Utah 8 10 11
New York 12 14 15
data.drop(['two','four'],axis=('columns'))
Out[50]:
one three
Ohio 0 2
Colorado 4 6
Utah 8 10
New York 12 14
还可以用inplace=True
的参数在原数据上进行直接修改而不需要返回到新的数据上。
In [51]: obj.drop('c',inplace=True)
In [52]: obj
Out[52]:
a 0.0
b 1.0
d 3.0
e 4.0
dtype: float64
网友评论