Pandas计算电力数据小时均值导出CSV出现NaN空缺问题求助
问题原因
- 核心问题是日期解析错误:你的CSV文件中日期为标准的
YYYY-MM-DD HH:MM:SS(年-月-日 时:分:秒)格式,read_csv时添加的dayfirst=True参数是为日在前的日期格式(如DD/MM/YYYY)设计的,会导致月份和日期被颠倒解析。比如你原始数据中真实的2021年1月3日的记录,会被错误识别为2021年3月1日的记录,按小时分组时2021年1月3日的分组没有对应原始数据,自然返回NaN值。 - 验证方法:读取数据后执行
print(file['Date/Time'].head(20)),对比输出的日期和CSV文件中的原始日期即可确认解析错误。
解决方法
- 首先修正读取代码,删除错误的
dayfirst=True参数,标准ISO格式日期pandas可自动正确解析:
import pandas as pd file = pd.read_csv('Electricity_data.csv', sep = ',', skiprows = 0, parse_dates = ['Date/Time']) pd_mean = file.groupby(pd.Grouper(key = 'Date/Time', freq = 'H')).mean().reset_index() # 若需要删除原始数据确实缺失导致的全空行,可取消注释下行代码 # pd_mean = pd_mean.dropna(subset=['kWh', 'kVArh', 'kVA', 'PF'], how='all') pd_mean.to_csv("data_1h_year_.csv", index=False)
- 额外优化:导出CSV时添加
index=False参数,可以避免多余的索引列被写入文件。
内容的提问来源于stack exchange,提问作者Sultry T.
相关产品推荐
相关产品推荐

