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

Python pandas设置DataFrame列名后数据全为NaN如何解决

问题原因

你执行pd.DataFrame(x, columns=[新列名列表])的逻辑存在问题:当你传入已有DataFrame作为数据源构造新DataFrame时,columns参数的作用是从数据源中筛选出指定名称的列,而非直接修改列名。
你删完列得到的x的列名还是读取csv时的原始列名(也就是你之前删列用到的'2'、'7'这类数字字符串),找不到你指定的TimeStamp等新列名,pandas就会自动把这些列的值全部填充为NaN。

正确实现代码

直接修改x的columns属性即可完成重命名,不需要重新构造DataFrame:

import pandas as pd
df = pd.read_csv('testData.csv')
# 删除无用列
x = df.drop(columns=['2','3','7','8','9','10','11'])
# 直接为剩余列设置新列名
x.columns = ['TimeStamp','OpenTemp','CloseTemp','MeanTemp','EndTimeStamp']
# 写入新csv文件,index=False表示不导出pandas自带的行索引
x.to_csv('processed_data.csv', index=False)

如果你的原始csv文件本身没有表头,第一行就是数据,还可以在读取阶段就调整逻辑:

import pandas as pd
# header=None表示原始csv没有表头,第一行就是数据
df = pd.read_csv('testData.csv', header=None)
# 此时列名是从0开始的数字索引,直接传数字删列即可
x = df.drop(columns=[2,3,7,8,9,10,11])
x.columns = ['TimeStamp','OpenTemp','CloseTemp','MeanTemp','EndTimeStamp']
x.to_csv('processed_data.csv', index=False)

内容的提问来源于stack exchange,提问作者Kevin Le Gall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:05