在Python中从pandas系列中删除元素

24

我有一个系列数据类型,是通过从Pandas数据框中减去两个列而生成的。

我想从该系列中删除第一个元素,该元素在R中将为x[-1]。我可以使它在np数组类中工作,但系列类不起作用。


x.idx[-1,] 做你想要的吗? - jwdink
它说“'Series'对象没有属性'idx'”。 - jay2020
对不起,我的意思是iloc,而不是idx。 - jwdink
2个回答

44
使用基于整数的切片应该可以解决问题 - (请参阅文档):
s.iloc[1:]

如果您更喜欢使用drop而不是slice,则可以使用内置的drop方法:

s.drop(s.index[0])

要移除多个项目,您需要包含一个索引位置的列表

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

或者一个切片

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

在这里使用 drop 是一个非常好的解决方案。我已经为你的第一个答案点赞了,但我认为这个编辑甚至更好。 - johnchase

2

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开始连续时才有效。

这段代码的意思是 x.drop(x.index[[0, 3, 4]]). - Stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接