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的主要内容,如果未能解决你的问题,请参考以下文章
重新采样 MultiIndexed Pandas DataFrame 并将不同的函数应用于列