Python 将行与列值合并在彼此的范围内

Python 将行与列值合并在彼此的范围内,python,pandas,Python,Pandas,我有一个示例数据帧,如下所示 x y dx 0 1 6.0 1.1 1 2 6.0 1.5 2 2 6.5 1.2 3 3 7.2 4.3 4 4 7.5 4.5 5 4 8.0 4.7 6 5 1.1 7.0 如果列dx中的值彼此在1的范围内,我希望合并行。不会有重叠的范围。我可以保留其中一行,去掉其余的行,或者对所有行取平均值。因此,预期的输出如下所示 x y dx 1 1 6.0 1.1 2 3 7.2

我有一个示例数据帧,如下所示

   x    y   dx
0  1  6.0  1.1
1  2  6.0  1.5
2  2  6.5  1.2
3  3  7.2  4.3
4  4  7.5  4.5
5  4  8.0  4.7
6  5  1.1  7.0
如果列dx中的值彼此在1的范围内,我希望合并行。不会有重叠的范围。我可以保留其中一行,去掉其余的行,或者对所有行取平均值。因此,预期的输出如下所示

   x    y   dx
1  1  6.0  1.1
2  3  7.2  4.3
3  5  1.1  7.0


您可以通过以下选项选择第一个选项:

import pandas as pd
new_df=df[0:1]
for i in range(1,len(df)):
    if df.dx.iloc[i]-new_df.dx.iloc[-1]>1:
        new_df=pd.concat([new_df, df.iloc[i:i+1,:]], ignore_index=True)
试试这个

df_final = df.groupby((df.dx.diff().abs() > 1).cumsum(), as_index=False).first()

Out[288]:
   x    y   dx
0  1  6.0  1.1
1  3  7.2  4.3
2  5  1.1  7.0

你想要这两个选项中的任何一个,或者两者都想要?这是否回答了你的问题@阿切尔:两个人中的任何一个都可以。谢谢。我修改了示例数据框以正确反映问题。没有必要一行包含所有整数。因此,从第一行开始,您希望保留第一行并删除dx+1范围内的所有行,然后保留下一行,无论dx的值如何,并删除该行中包含dx+1的下一行,等等?是的,没错,我做了一些更改,请检查我的回答谢谢接受。也许也要投票?当做
df_final = df.groupby((df.dx.diff().abs() > 1).cumsum(), as_index=False).first()

Out[288]:
   x    y   dx
0  1  6.0  1.1
1  3  7.2  4.3
2  5  1.1  7.0