我正在尝试填写包含离散样本深度(样本 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]
})
您可以使用
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