合并DataFrame时丢失无训练日测试数据的问题求助
解决DataFrame合并丢失测试数据的问题
问题原因
你用how='left'做左连接时,只会保留data(训练数据)里所有的行,test_data中那些没有对应训练记录的Date+About组合会被直接丢弃,这就是测试信息丢失的核心原因。
解决方案
用**外连接(how='outer')**替代左连接,这样会保留两个DataFrame中所有的Date+About组合,两边没有对应值的列会自动填充为NaN,完全覆盖你的需求:
data_combined = data.merge(test_data, on=['Date', 'About'], how='outer')
可选优化:标记数据类型
如果需要明确区分每一行是训练数据、测试数据,还是同一天既有训练又有测试,可以在合并前给两个表添加标记列:
# 给训练数据添加类型标记 data['is_training'] = True # 给测试数据添加类型标记 test_data['is_test'] = True # 执行外连接合并 data_combined = data.merge(test_data, on=['Date', 'About'], how='outer') # 将空值填充为False,明确数据类型 data_combined['is_training'] = data_combined['is_training'].fillna(False) data_combined['is_test'] = data_combined['is_test'].fillna(False)
内容的提问来源于stack exchange,提问作者E Jager de
相关产品推荐
相关产品推荐

