【问题标题】:Is there a pandas function for repeated values? [duplicate]是否有用于重复值的 pandas 函数? [复制]
【发布时间】:2020-06-06 16:34:10
【问题描述】:

考虑系列 x_1,x_2,x_3,x_4...如果 x_i = x_{i+1}...我想将 x_i 设置为 NaN。我不在乎 x_2 是否等于 x_9。一两秒钟,我以为这是重复值的含义,但我现在看到它会关心 x_9。我很确定这个例程一定已经存在于 pandas 中,但我找不到。

def ff_repeated(xnp):
    nfnp = xnp.size
    ffnp = np.empty(nfnp,dtype=bool)
    ffnp[0] = False
    for i in range(1,nfnp):
        ffnp[i] =  xnp[i] == xnp[i-1] 
    return ffnp

想法?那么我如何使用上面的

ffnp = ff_repeated(dm.loc["Pressure"].values)
dm.loc["Pressure",ffnp] = np.NaN

【问题讨论】:

标签: python pandas duplicates


【解决方案1】:

您的版本应该可以正常工作,但它涉及 for 循环,因此本来就很慢。您可以通过简单地移动 pd.Series 并在之后进行比较来使用矢量化:

xnp = pd.Series([1,2,3,3,4,2,5,5,6])
ffnp = xnp.shift(1) == xnp

ffnp

0    False
1    False
2    False
3     True
4    False
5    False
6    False
7     True
8    False

然后您可以像以前一样使用ffnp 将值设置为nan

【讨论】:

  • 正是我需要的。为了一个有趣的(?)转折。如果您想始终强制最后一行为 False,请不要执行创建新索引的 ``` ffnp[-1] = False ```。正确答案是 ffnp.iloc[-1] = False。天哪,我花了很长时间来调试......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2012-04-08
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
相关资源
最近更新 更多