我有一个非常大的数据集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的简单方法
目前没有回答
相关问题 更多 >
编程相关推荐