Pandas:同长度同结构DataFrame添加列出现NaN的问题排查
问题原因与解决方法
核心原因:索引不匹配
哪怕两个DataFrame的长度、列结构完全一致,只要索引(index)不匹配(比如一个是默认的0开始整数索引,另一个是自定义字符串/日期索引,或是索引顺序被打乱),pandas赋值时会按索引对齐,找不到对应索引的行就会填充NaN。
解决办法
1. 重置索引后赋值
先把两个DataFrame的索引统一为默认整数索引,再执行赋值:
DAT01 = DAT01.reset_index(drop=True) DAT02 = DAT02.reset_index(drop=True) DAT01['CMGBA'] = DAT02['USDMWH']
2. 忽略索引,按位置直接赋值
如果确定两行的顺序完全对应,直接取列的底层数值数组赋值,跳过索引对齐逻辑:
# 两种写法都可行 DAT01['CMGBA'] = DAT02['USDMWH'].values # 或者 DAT01['CMGBA'] = DAT02['USDMWH'].to_numpy()
3. 先验证索引一致性
可以先打印两个DataFrame的索引,确认是否真的一致:
print("DAT01索引:", DAT01.index) print("DAT02索引:", DAT02.index) # 直接比较索引是否完全匹配 print("索引是否一致:", DAT01.index.equals(DAT02.index))
内容的提问来源于stack exchange,提问作者Eduardo
相关产品推荐
相关产品推荐

