pandas df.resample('D').sum() 返回 NaN

Posted

技术标签:

【中文标题】pandas df.resample(\'D\').sum() 返回 NaN【英文标题】:pandas df.resample('D').sum() returns NaNpandas df.resample('D').sum() 返回 NaN 【发布时间】:2018-04-11 06:12:48 【问题描述】:

我有一个带有电表读数(累积)的 pandas 数据框。 df DatetimeIndex dtype='datetime64[ns]'。当我加载 .csv 文件时,数据框不包含任何 NaN 值。我需要计算每月和每天产生的能量。

为了计算每月生成,我使用 dfmonth = df.resample('M').sum() 。这工作正常。 为了计算每天的发电量,我想到了使用:dfday = df.resample('D').sum()。这部分有效,但对于某些索引日期(原始文件中没有数据丢失)返回 NaN。

请看下面的代码。有谁知道为什么会这样?有什么建议的解决方案吗?

df = pd.read_csv(file)
df = df.set_index(pd.DatetimeIndex(df['Reading Timestamp']))
df=df.rename(columns = 'Energy kWh':'meter', 'Instantaneous Power kW (approx)': 'kW')
df.drop(df.columns[:10], axis=1, inplace=True) #Delete columns I don't need.
df['kWh'] = df['meter'].sub(df['meter'].shift())
dfmonth = df.resample('M').sum() #This works OK calculating kWh. dfmonth does not contain any NaN.
dfday = df.resample('D').sum() # This returns a total of 8 NaN out of 596 sampled points. Original df has 27929 DatetimeIndex rows

提前谢谢你。

【问题讨论】:

您的索引中是否缺少日期?例如也许您没有周末约会的条目? 不,我没有错过任何日期。如果有帮助,我可以附上 .csv 请附上您的原始数据和代码以重现您的数据,我的意思是您是否缺少特定日期的日期?如果您查看您的NaN 条目,是因为您没有任何包含这些日期的索引条目吗?这可能是正在发生的事情 【参考方案1】:

向你们所有人道歉。我得到的 .csv 和我检查的原始 .csv 不是同一个文件。数据以某种方式损坏.... 直到现在我一直在用头撞墙,df.resample('D').sum()没有问题

再次抱歉,请考虑线程排序。

【讨论】:

以上是关于pandas df.resample('D').sum() 返回 NaN的主要内容,如果未能解决你的问题,请参考以下文章

pandas OHLC 聚合随着 OHLC 的时间重新采样

重新采样 MultiIndexed Pandas DataFrame 并将不同的函数应用于列

Pandas 提取以 [\s\d_/] 开头并以 [\s\d_/] 结尾的信息

Python:通过非整数比例因子重新缩放熊猫中的时间序列

使用 seaborn 使热图的大小更大

将数据帧重新采样为具有任意期末月份的 n 个月期间