我正在尝试重新采样一个熊猫数据帧,时间戳索引为每小时发生一次。我感兴趣的是获取具有字符串值的列的最常用值。但是,时间序列重采样的内置函数不包括mode作为重采样的默认方法之一(因为它是“mean”和“count”)。
我试图定义我自己的函数并传递该函数,但没有起作用。我_也_尝试_过_使用_ ^{<_cd1_>} _函数_ , _但_它_不_起_作用_ , _因为_我_正在_处理_字符串_ 。_在
以下是我的数据外观:
station_arrived action lat1 lon1
date_removed
2012-01-01 13:12:00 56 A 19.4171 -99.16561
2012-01-01 13:12:00 56 A 19.4271 -99.16361
2012-01-01 15:41:00 56 A 19.4171 -99.16561
2012-01-02 08:41:00 56 C 19.4271 -99.16561
2012-01-02 11:36:00 56 C 19.2171 -99.16561
这是我目前为止的代码:
^{pr2}$我看到以下错误:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\generic.py", line 2836, in resample
return sampler.resample(self).__finalize__(self)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\tseries\resample.py", line 83, in resample
rs = self._resample_timestamps()
File "C:\Program Files\Anaconda\lib\site-packages\pandas\tseries\resample.py", line 277, in _resample_timestamps
result = grouped.aggregate(self._agg_method)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2404, in aggregate
result[col] = colg.aggregate(agg_how)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2076, in aggregate
ret = self._aggregate_multiple_funcs(func_or_funcs)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2125, in _aggregate_multiple_funcs
results[name] = self.aggregate(func)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 2073, in aggregate
return getattr(self, func_or_funcs)(*args, **kwargs)
File "C:\Program Files\Anaconda\lib\site-packages\pandas\core\groupby.py", line 486, in __getattr__
(type(self).__name__, attr))
AttributeError: 'SeriesGroupBy' object has no attribute 'A '
dict中的值必须是表示函数的字符串(例如'count'/'sum'/'max')或传递给每个组的函数。您传递的是结果(值)
mode(travels2012['action'])
。在因此,您需要将此函数设为一个函数,应用于每个组:
我不确定这是否是您想要的(因为它适用于整个专栏),也许您需要为每个组采用模式:
^{pr2}$我更希望看到实际值(A)而不是列表中的实际值,NaN而不是[]。
我认为值得一提的是Series mode方法,它有一个警告,即总是返回一个序列(因为可能有一个平局),如果没有值出现多次,则为空。
您可以按如下方式环绕它(您也可以类似地包装模式函数):
相关问题 更多 >
编程相关推荐