2016-01-06 67 views
1

我有一個系列數據類型,它是通過從pandas數據框中減去兩列生成的。從python中刪除pandas系列中的元素

我想刪除系列中的第一個元素,它將在R中爲x[-1]我可以在np數組類中使用它,但系列類不起作用。

+0

是否x.idx [-1,]你想要什麼這個解決方案纔有效? – jwdink

+0

它說'系列'對象沒有屬性'idx' – jay2020

+0

對不起,我的意思是iloc,而不是idx。 – jwdink

回答

8

使用integer基於切片應該工作 - (see docs):

s.iloc[1:] 

如果你喜歡drop而非slice,你可以使用內置的drop方法:

s.drop(s.index[0]) 

要刪除幾個項目,您將包括listindex職位:

s.drop(s.index[[0, 2, 4]]) 

slice

s.drop(s.index[1: 4]) 
+0

在這裏使用'drop'是一個非常好的解決方案。我已經提出了第一個答案,但我認爲這個編輯更好。 – johnchase

1

Python沒有切片出來的位置是R的方式做的一種方式。如果您只需要刪除第一個或最後一個元素,則以前發佈的解決方案:s.iloc[1:]可能是最好的。如果您需要刪除多個元素,或元素在系列的中間,你可以用下面這樣做:

In [29]: x = pd.Series(np.random.randn(10)) 

In [34]: x[~x.index.isin([0, 3, 4])] 
Out[34]: 1 0.884089 
     2 0.921271 
     5 -0.847967 
     6 -0.088892 
     7 -0.765241 
     8 -0.084489 
     9 -0.581152 
     dtype: float64 

在這種情況下,我們去掉了0,3和4位。

這有點麻煩,所以就像我說過的先前的解決方案可能是你所需要的最好的,但是這確實有一些額外的功能。

值得一提的是,如果你的指數是數字和連續從0開始

+0

還有x.drop(x.index [[0,3,4]])。 – Stefan