拼接x_train与y_train时多出NaN行问题(y_train为Series)
问题分析与解决
当你用pd.concat([x_train,y_train],axis=1)拼接DataFrame(x_train)和Series(y_train)时,即便确认两者长度、索引完全匹配,仍出现额外全NaN行(仅目标列有值),核心原因是Series与DataFrame的拼接逻辑差异:
pd.concat在处理Series时会严格基于索引对齐,但如果Series的索引存在隐性的类型不一致(比如x_train索引是整数,y_train索引是字符串格式的数字)、或Series内部存在未被察觉的重复索引,就会触发默认外连接(join='outer')的隐式扩展,导致出现多余的NaN行。
解决方案
方法1:将Series转为DataFrame后拼接(最稳妥)
把y_train转换成DataFrame格式,消除拼接时的类型差异:
pd.concat([x_train, y_train.to_frame()], axis=1)
方法2:直接为DataFrame新增列(高效简洁)
如果不需要保留原x_train的副本,直接赋值列是更高效的方式:
x_train['Diabetes'] = y_train
方法3:使用索引关联的merge操作
通过指定索引作为连接键,确保完全对齐:
pd.merge(x_train, y_train.to_frame(), left_index=True, right_index=True)
内容的提问来源于stack exchange,提问作者a_confused_student
相关产品推荐
相关产品推荐

