You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas的.append方法新增行出现NaN值及索引异常的原因?

问题描述

现有如下数据集:

inner_watt = pd.DataFrame(pd.read_csv('input/0.7mm/0.7inner-100watt.csv')[' Current-A'])

数据集内容:

Current-A
2.3309
2.3309
2.3309
2.3309
2.3309
2.3309
2.3309
2.3309

先执行以下代码,截取前4条数据转置后添加到空DataFrame:

formatted_inner_watt = pd.DataFrame(columns=range(4))
formatted_inner_watt = formatted_inner_watt.append(inner_watt[0:4].T, ignore_index=True)

此时结果正常:

0   2.3309,2.3309,2.3309,2.3309

但执行以下代码添加接下来4条数据时,结果异常:

formatted_inner_watt = formatted_inner_watt.append(inner_watt[4:8].T, ignore_index=True)

异常结果:

0   2.3309,2.3309,2.3309,2.3309,NaN,NaN,NaN,NaN
1   NaN,NaN,NaN,NaN,2.3309,2.3309,2.3309,2.3309

请问这是什么原因?

原因分析

问题出在转置后的数据列名不匹配:

  • 初始创建的formatted_inner_watt列名是[0,1,2,3]
  • 对inner_watt[0:4]转置时,转置后的DataFrame列名是原数据的行索引[0,1,2,3],和目标DataFrame列名完全匹配,所以append后能正常对齐。
  • 对inner_watt[4:8]转置时,转置后的DataFrame列名是原数据的行索引[4,5,6,7],和目标DataFrame的列名[0,1,2,3]完全不重合,Pandas会自动扩展列来容纳新的列名,同时在不匹配的位置填充NaN,就出现了你看到的异常结果。
解决方法

只需把转置后的列名重置为[0,1,2,3],确保和目标DataFrame列名一致,代码修改如下:

# 添加前4条数据
formatted_inner_watt = formatted_inner_watt.append(inner_watt[0:4].T.reset_index(drop=True), ignore_index=True)
# 添加后4条数据
formatted_inner_watt = formatted_inner_watt.append(inner_watt[4:8].T.reset_index(drop=True), ignore_index=True)

或者更简洁的方式,直接重新设置转置后的列名:

# 处理后4条数据
next_batch = inner_watt[4:8].T
next_batch.columns = range(4)
formatted_inner_watt = formatted_inner_watt.append(next_batch, ignore_index=True)

这样操作后,新数据就能和原DataFrame的列对齐,不会出现NaN和列扩展的问题。

内容的提问来源于stack exchange,提问作者Wahab Khaddim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:01:25