python - 如何通过移位和条件找到最大值?

标签 python pandas

我有这样的Dataframe:

Index A
0     3
1     2
2     5
3     4
4     1
5     2
6     7
7     3
8     1

我需要进行轮类,拿 5 block ,这样最大值就在它们的中心。

结果:

Index A   Res
0     3    0
1     2    0
2     5    5
3     4    0
4     1    0
5     2    0
6     7    7
7     3    0
8     1    0

我如何使用 pandas 方法来实现这个?

最佳答案

您可以使用rolling使用 center=Truestep=5 参数:

N = 5

df.loc[N//2::N, 'Res'] = (df['A'].rolling(N, center=True, min_periods=1, step=N)
                          .max().values
                         )

输出:

   Index  A  Res
0      0  3  NaN
1      1  2  NaN
2      2  5  5.0
3      3  4  NaN
4      4  1  NaN
5      5  2  NaN
6      6  7  NaN
7      7  3  7.0
8      8  1  NaN

如果您想要 0 ,请使用它们预先填充列 (df['Res'] = 0) 或使用 @Corralien 的注释方法掩码:

df['Res'] = (df.rolling(5, center=True, min_periods=1)['A'].max()
               .where(lambda x: x == df['A'], 0).convert_dtypes()
            )

输出:

   Index  A  Res
0      0  3    0
1      1  2    0
2      2  5    5
3      3  4    0
4      4  1    0
5      5  2    0
6      6  7    7
7      7  3    0
8      8  1    0

关于python - 如何通过移位和条件找到最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77397723/

相关文章:

Python tarfile 压缩内存中的一个对象

python - 流图错误 : Cannot convert float NaN to integer

python - 如何检查字符串(变量)是否为空?

python - 带条形的分面条形图在 pandas 中并排

python - 根据其他数据帧的日期时间列过滤数据帧

python - RPi - 启动时运行的 Python Curses 程序没有键盘焦点

python - 如何避免在 Scrapy 中将媒体重新下载到 S3?

python - Pandas 将列中的列表列表展平?

python - pandas groupby.agg 列出行为

python - pandas 数据框对象将与 sklearn kmeans 聚类一起使用吗?