gpt4 book ai didi

python - Pandas 在每 n 个连续行中保持最高值

转载 作者:行者123 更新时间:2023-11-28 20:55:45 25 4
gpt4 key购买 nike

我有一个名为 df_initial 的 pandas 数据框,其中包含两列“a”和“b”以及 N 行。

我想将行数减半,删除“b”值较低的行。

因此在第 0 行和第 1 行之间我将保留第 1 行,在第 2 行和第 3 行之间我将保留第 3 行等。

这是我想要得到的结果:

print(df_initial)
a b
0 0.04 0.01
1 0.05 0.22
2 0.06 0.34
3 0.07 0.49
4 0.08 0.71
5 0.09 0.09
6 0.10 0.98
7 0.11 0.42
8 0.12 1.32
9 0.13 0.39
10 0.14 0.97
11 0.15 0.05
12 0.16 0.36
13 0.17 1.72
....

print(df_reduced)
a b
0 0.05 0.22
1 0.07 0.49
2 0.08 0.71
3 0.10 0.98
4 0.12 1.32
5 0.14 0.97
6 0.17 1.72
....

是否有一些 Pandas 函数可以执行此操作?

我看到有一个重采样函数 DataFrame.resample() ,但它对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,所以在这种情况下无效。

谢谢谁来帮助我

最佳答案

您可以 groupby每两行(一种简单的方法是获取索引的 floor division)并获取 idxmaxb 列索引数据框:

df.loc[df.groupby(df.index//2).b.idxmax(), :]

a b
0 0.05 0.22
1 0.07 0.49
2 0.09 0.71
3 0.11 0.98
4 0.13 1.32
5 0.15 0.97
6 0.17 1.72

或使用 DataFrame.rolling :

df.loc[df.b.rolling(2).max()[1::2].index, :]

关于python - Pandas 在每 n 个连续行中保持最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55971471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com