python - 如何按顺序查找和替换偶数位置元素的值

标签 python arrays pandas numpy dataframe

我有一个列表如下:

list_1 = [12, 15, 18, 21, 6, 9, 7, 21, 38, 62, 65, 68, 81, 21, 25, 96, 101, 8, 11]

存在值距离相等的元素序列。在此列表中,该距离为 3,例如 12, 15, 18, 21

如何用新值(例如 -1)替换每个序列/子列表的偶数位置元素的值。输出将是:

list_2 = [12, -1, 18, -1, 6, -1, 7, 21, 38, 62, -1, 68, 81, 21, 25, 96, 101, 8, -1]

最佳答案

使用diff()

s = pd.Series(list_1)
s.loc[(s.diff() == 3) & (s.index % 2 == 1)] = -1

产生

[12, -1, 18, -1, 6, -1, 7, 21, 38, 62, 65, -1, 81, 21, 25, 96, 101, 8, 11]

现在,如果您想要与这些序列的每个独立相关的偶数位置,请使用 groupbycumcount

s.loc[s.groupby(s.diff().ne(3).cumsum()).cumcount() % 2 == 1] = -1

产生

[12, -1, 18, -1, 6, -1, 7, 21, 38, 62, -1, 68, 81, 21, 25, 96, 101, 8, -1]

差异将是示例中的最后一个 -1 。第一个解决方案假定 11 不应被替换,因为它在 list_1 中的位置不均匀。第二个解决方案假设它应该被替换,因为它位于子列表 [8, 11]中的偶数位置。

关于python - 如何按顺序查找和替换偶数位置元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61615757/

相关文章:

python - 遍历 pandas 中的 groupby 字段

python - 如何使用 PyO3 解码 PyCodeObject?

python - Django-haystack:如何在我的设置中启用突出显示?

python - 在 Python 中识别列表中的重复值

c-尝试添加到 Struct 中的 char 数组时出现段错误

python - Pandas - 添加新列 - 使用循环

python - D-ITG流量发送

python - CNN 批处理不同大小的图像

Javascript按长度排序数组不稳定

Pandas 数据透视表 : trouble with dividing by sum of rows