Python 替换时间序列中多次出现的一个值
我试图替换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
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设置值 如何选择要替换的值?如果替换值现在导致列表中的其他值被复制怎么办?如何选择要替换的值?如果替换值现在导致列表中的其他值被复制,该怎么办?