首页 > 解决方案 > 熊猫意味着邻居零?

问题描述

我有以下数据:

1: 0
2: 800
3: 800
4: 800
5: 800
6: 0
7: 0
8: 800
9: 800
10: 0
11: 800
12: 0

现在我想用 400(实际上是 800 和相邻 0 的平均值)替换所有 800,它是任何零(之前或之后)的邻居。

最终结果:

1: 0
2: 400
3: 800
4: 800
5: 400
6: 0
7: 0
8: 400
9: 400
10: 0
11: 400
12: 0

使用 Pandas DataFrame 的正确方法是什么?

标签: pythonpandas

解决方案


您可以根据 2 个布尔条件的并集将您的系列减半:

df = pd.DataFrame({'col': [0, 800, 800, 800, 800, 0, 0, 800, 800, 0, 800, 0]})

df.loc[df['col'].shift().eq(0) | df['col'].shift(-1).eq(0), 'col'] //= 2

print(df)

    col
0     0
1   400
2   800
3   800
4   400
5     0
6     0
7   400
8   400
9     0
10  400
11    0

推荐阅读