【问题标题】:Replacing one value in a time series when it appears more than once当时间序列中的一个值出现多次时替换它
【发布时间】:2020-06-01 15:20:48
【问题描述】:

我正在尝试替换 python 系列中的一个值,这里的线索是我只想替换它一次,例如:

S = pd.Series([0, 1, 2, 3, 2, 5, 2, 6])

数字 2 重复了 3 次,我只想将“第二个”2 替换为 4, 我不想替换系列中的所有“2”数字。

有什么办法吗?

提前谢谢你

【问题讨论】:

  • 如何选择替换它的值?如果该替换值现在导致列表中的某些其他值重复怎么办?

标签: python pandas replace series


【解决方案1】:

你可以试试这个方法:

S.loc[((S == 2).cumsum() == 2).idxmax()] = 4
print(S)

输出:

0    0
1    1
2    2
3    3
4    4
5    5
6    2
7    6
dtype: int64

细节,找到Series中所有等于2的地方,然后用cumsum计算那些2,现在,选择第一次出现的2,用.loc来设置值。

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    在我的代码中,min_pos 为您提供 2 在系列中的第一个位置。 然后,我们使用iloc 查找系列中出现 2 的下一个位置的索引,以过滤第一次出现。

    import pandas as pd
    
    S = pd.Series([0, 1, 2, 3, 2, 5, 2, 6])
    min_pos = S[S==2].idxmin(2)
    replace_idx = S.iloc[min_pos+1:].idxmin(2)
    S.iloc[replace_idx] = 'new'
    
    print(S)
    

    输出

     0      0
    1      1
    2      2
    3      3
    4    new
    5      5
    6      2
    7      6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多