pandas 如何在Dataframe中合并具有最近值的行

wyyhbhjk  于 2023-10-14  发布在  其他
关注(0)|答案(2)|浏览(109)

我有一个DataFrame这样的:

index B
0     1
1     2
2     5
3     6
4     7
5     10

我需要合并行的差异小于或等于2,选择行较小的价值观和设置计数合并
结果应该是这样的:

index B count
0     1   2
1     5   3
2     10  1

如何使用Pandas解决这个问题?

vsikbqxv

vsikbqxv1#

非常类似to @AndrejKesely,只是语法更短,使用命名聚合:

df.groupby(df["B"].diff().gt(2).cumsum(), 
           as_index=False).agg(B=("B", "first"), 
                               count=("B", "count"))

输出量:

B  count
0   1      2
1   5      3
2  10      1
py49o6xq

py49o6xq2#

使用.groupby(),其中您执行.diff(),然后执行.cumsum()

out = (
    df.groupby(df["B"].diff().gt(2).cumsum())
    .agg({"B": ("min", "count")})
    .droplevel(0, axis=1)
    .rename(columns={"min": "B"})
    .reset_index(drop=True)
)

print(out)

图纸:

B  count
0   1      2
1   5      3
2  10      1

相关问题