使用 python 按 +- 边距分组
我想根据边距 +-1 (1) 和 +-10 (2) 对由 2 列 ['1', '2'] 组成的数据框进行分组,例如 [[273, 10],[274, 14] ,[275, 15]] 我希望它的结果是 [[273, 10],[274, 14]],[[274, 14],[275, 15]]。
但我有一个相当大的数据集,按方法分组并不能解决问题,因为我无法输入这两个条件。
例如,这种代码永远带我走,没有结果
1 = np.random.uniform(low=300, high=1800, size=(300000,))
2 = np.random.uniform(low=0, high=7200, size=(300000,))
print("Random numbers were created")
df = pd.DataFrame({'1': 1, '2':2})
df['id'] = df.index
1_MARGIN = 1
2_MARGIN = 10
tic = time.time()
group = []
for index, row in df.iterrows():
filtered_df = df[(row['1'] - 1_MARGIN < df['1']) & (df['1'] < row['1'] + 1_MARGIN) &
(row['2'] - 2_MARGIN < df['2']) & (df['2'] < row['2'] + 2_MARGIN)]
group.append(filtered_df[['id', '1']].values.tolist())
toc = time.time()
print(f"for loop: {str(1000*(toc-tic))} ms")
我也尝试过
data = df.groupby('1')['2'].apply(list).reset_index(name='irt')
我得到了我想要的结果,但我无法适应条件