Python 替换时间序列中多次出现的一个值

Python 替换时间序列中多次出现的一个值,python,pandas,replace,series,Python,Pandas,Replace,Series,我试图替换python系列中的一个值,这里的线索是我只想替换它一次,例如: S = pd.Series([0, 1, 2, 3, 2, 5, 2, 6]) 数字2重复了3次,我只想将“第二个”2替换为4, 我不想替换系列中的所有“2”号 有什么办法吗 提前感谢您可以执行以下操作: 在my codemin_pos中,获取序列中2的第一个位置。 然后,我们使用iloc过滤第一次出现的位置,查找序列中出现2的下一个位置的索引 import pandas as pd S = pd.Series([0

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

S = pd.Series([0, 1, 2, 3, 2, 5, 2, 6])
数字2重复了3次,我只想将“第二个”2替换为4, 我不想替换系列中的所有“2”号

有什么办法吗


提前感谢

您可以执行以下操作:

在my code
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

您可以执行以下操作:

在my code
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
您可以这样尝试:

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
详细信息,找到序列中等于2的所有位置,然后使用cumsum对这些2进行计数,现在,选择第一次出现的计数2,并使用.loc设置值

您可以这样尝试:

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

详细信息,找到序列中等于2的所有位置,然后使用cumsum对这些2进行计数,现在,选择第一次出现的计数2,并使用.loc设置值

如何选择要替换的值?如果替换值现在导致列表中的其他值被复制怎么办?如何选择要替换的值?如果替换值现在导致列表中的其他值被复制,该怎么办?