要从另一个数据帧中的列中采样产生相同分布的数据帧,可以使用以下步骤:
假设我们有两个数据帧 df_original
和 df_sampled
,我们希望 df_sampled
的某一列(例如 'column_name')与 df_original
中的该列具有相同的分布。
import pandas as pd
# 假设 df_original 是原始数据帧
# df_sampled 是目标数据帧,初始时可能为空或包含部分数据
# 1. 计算原始数据帧中目标列的累积分布函数 (CDF)
original_cdf = df_original['column_name'].value_counts(normalize=True).sort_index().cumsum()
# 2. 对目标数据帧中的目标列进行排序,并计算其CDF
sampled_cdf = df_sampled['column_name'].value_counts(normalize=True).sort_index().cumsum()
# 3. 使用插值方法根据原始CDF对目标数据帧进行重采样
def map_values(value, original_cdf, sampled_cdf):
return sampled_cdf[sampled_cdf <= original_cdf[value]].index[-1]
df_sampled['column_name'] = df_sampled['column_name'].apply(lambda x: map_values(x, original_cdf, sampled_cdf))
# 现在 df_sampled 中的 'column_name' 列应该与 df_original 中的该列具有相似的分布
通过以上步骤和方法,可以有效地从一个数据帧中采样产生具有相同分布的新数据帧。
领取专属 10元无门槛券
手把手带您无忧上云