根据df2中两列间隔的值填充df1中的pandas列

问题描述 投票:0回答:1

我正在尝试填写包含离散样本深度(样本 df)的数据框中的空列。我想扫描包含深度间隔的第二个数据帧(间隔 df),并检查样本 df 中的深度位于哪个间隔,然后将间隔 df 中的深度间隔中找到的值分配给样本 df 。我该怎么办?

我有一个深度间隔的数据框,其中定义了间隔的顶部和底部深度以及该间隔的值:

interval_df = pd.DataFrame({
    'top depth':[100,200,700],
    'bottom depth':[200,700,1000],
    'value':[15,10,20],
})

第二个数据帧包含选定的深度,我想根据interval_df中此间隔的值填写“值”列:

sample_df = pd.DataFrame({
    'depth':[258,300,567,858,900],
    'value':[0,0,0,0,0]
})

我想要的输出如下所示:

sample_df = pd.DataFrame({
    'depth':[258,300,567,858,900],
    'uncertainty':[10,10,10,20,20]
})
pandas dataframe
1个回答
0
投票

您可以使用

pd.cut
,因为您的间隔很密集:

bins = (pd.concat([interval_df['top depth'], interval_df['bottom depth']])
          .drop_duplicates(ignore_index=True))
labels = interval_df['value']

sample_df['uncertainty'] = pd.cut(sample_df['depth'], bins=bins, labels=labels)

输出:

>>> sample_df
   depth uncertainty
0    258          10
1    300          10
2    567          10
3    858          20
4    900          20
© www.soinside.com 2019 - 2024. All rights reserved.