【问题标题】:Removing elements from pandas series in python从python中的熊猫系列中删除元素
【发布时间】:2016-04-11 00:16:33
【问题描述】:

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

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

【问题讨论】:

  • x.idx[-1,] 做你想做的事吗?
  • 它说“系列”对象没有属性“idx”
  • 对不起,我说的是 iloc,不是 idx。

标签: python r pandas series


【解决方案1】:

使用基于 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])

【讨论】:

  • 在这里使用drop 是一个非常好的解决方案。我已经赞成你的第一个答案,但我认为这个编辑更好。
【解决方案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]])。
猜你喜欢
  • 2013-12-12
  • 2019-05-22
  • 2022-07-13
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
相关资源
最近更新 更多