在Pandas中的公共键和范围上合并大型数据帧

2024-09-26 22:54:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大的数据集df_large(~26000行)和一个相对较小的数据集df_small(~20000行)

我试图首先通过一个公共键'ASI'合并这些数据帧。 然后,我想对一系列'Depth'列的特定范围进行筛选。但是,其中一个数据帧每个ASI只有3个深度值,因此我需要在df_large中找到这3个深度之间的值

例如:

df_large

ASI     Depth     value_m     value_o....
101     5.0
101     5.5
101     5.67
101     5.72
.
.
.
101     20.8
.
.
120     10
120     10.2
120     10.3
.
.
120     24.0
120     25.7
.
.
120     60.3

较小的数据帧如下所示:

df_small

ASI    Depth_Top    value_n
101    5.6
101    12.7
101    16.9
.
.
120    12.3
120    24.0
120    50.2

我需要输出:

df_merged

ASI     Depth    Depth_Top
101     5.67     5.6
101     5.72     5.6
.
.
101     12.7     12.7
101     13.0     12.7
.
.
120     12.5     12.3
120     13.5     12.3
.
.
120     24.0     24.0
120     25.7     24.0
.
.

伪代码类似于:

df_total = df_large.merge(df_small, on='ASI')

df_merged = df_total[(df_total['Depth'] >= df_total['Depth_Top'].min()) & (df_total['Depth'] <= df_total['Depth_Top'].max()]

因此,df_large的深度值保持在深度_顶部值的第一、第二和第三个值的间隔内

有没有一种不运行MemoryError的简单方法


Tags: 数据代码dfvalueontopmergemerged

热门问题