【问题标题】:No Results in DataFrame Resample (pandas)DataFrame Resample(熊猫)中没有结果
【发布时间】:2017-07-22 19:30:00
【问题描述】:

我有一个如下所示的数据框 (df):

      Time          Temp
2017-01-01 00:30:00 11.1
2017-01-01 01:00:00 10.8
2017-01-01 01:30:00 10.8
2017-01-01 02:00:00 10.8
2017-01-01 02:30:00 11.1
.....             ....

我正在尝试获取 Temp 数据的每小时平均值,我曾经使用以下代码(时间是索引):

df2 = df.resample('H').agg(['mean','std'])

但现在我收到以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-b43bf44dcae3> in <module>()
----> 1 df9 = dfroof4.resample('H').agg(['mean','std'])

D:\Anaconda3\lib\site-packages\pandas\core\resample.py in aggregate(self, arg, *args, **kwargs)
    314 
    315         self._set_binner()
--> 316         result, how = self._aggregate(arg, *args, **kwargs)
    317         if result is None:
    318             result = self._groupby_and_aggregate(arg,

D:\Anaconda3\lib\site-packages\pandas\core\base.py in _aggregate(self, arg, *args, **kwargs)
    632             return self._aggregate_multiple_funcs(arg,
    633                                                   _level=_level,
--> 634                                                   _axis=_axis), None
    635         else:
    636             result = None

D:\Anaconda3\lib\site-packages\pandas\core\base.py in _aggregate_multiple_funcs(self, arg, _level, _axis)
    689         # if we are empty
    690         if not len(results):
--> 691             raise ValueError("no results")
    692 
    693         try:

ValueError: no results

有什么想法吗?

编辑

输出

print(df.dtypes)

是:

Temp    object
dtype: object

谢谢!

【问题讨论】:

  • df2 = df.resample('H')['Temp'].agg(['mean','std']) 呢?
  • 还有print (df.dtypes)是什么?
  • 我已经尝试了上述方法,我得到:“没有要聚合的数字类型”。而且我还为输出编辑了我的帖子。谢谢!

标签: python pandas


【解决方案1】:

您需要先由astype 转换为float

df['Temp'] = df['Temp'].astype(float)
df2 = df.resample('H')['Temp'].agg(['mean','std'])

如果某些不良数据(如strings)使用to_numeric 将它们替换为NaNs:

df['Temp'] = pd.to_numeric(df['Temp'], errors='coerce')
df2 = df.resample('H')['Temp'].agg(['mean','std'])

【讨论】:

  • 首先谢谢!我确实需要转换为字符串,但是当我尝试上面的 to_numeric 时,我得到以下信息: D:\Anaconda3\lib\site-packages\ipykernel_main_.py:2: SettingWithCopyWarning :试图在 DataFrame 中的切片副本上设置一个值。尝试改用 .loc[row_indexer,col_indexer] = value 查看文档中的警告:pandas.pydata.org/pandas-docs/stable/… from ipykernel import kernelapp as app
  • 显然这意味着上面的代码有问题。可能需要copy,比如this
  • 或者可能是[]的一些问题,我想你可以查看docs
猜你喜欢
  • 1970-01-01
  • 2020-09-23
  • 2019-10-02
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2021-02-04
  • 2023-03-26
  • 2021-09-01
相关资源
最近更新 更多