Актуальна
Как и в этом маленьком примере, я стараюсь еженедельным RESAMPLE на панд dataframe:панды timedelta RESAMPLE недели терпит неудачу
import datetime
import pandas as pd
df = pd.DataFrame([{
'A' : datetime.datetime.now() - datetime.datetime.now(),
'B' : 2
},{
'A' : datetime.datetime.now() - datetime.datetime.now(),
'B' : 3
}])
df = df.set_index('A')
df.resample('W', how="mean")
это выбрасывает AttributeError
:
AttributeError: 'Week' object has no attribute 'nanos'
(Примечание: если я переформатируюсь на "D"
, проблема не возникает)
Если вместо этого я бросил индекс к DateTime:
df.index = pd.to_datetime(df.index.values)
df.resample('W', how="mean")
повторной дискретизации работает, как хорошо.
Вопрос: Есть ли тип pandas timedelta, который не полагается на nano секунд?
Or: У вас есть более элегантный способ, чем использовать datetime
для timedelta
?
Полный след:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/pandas/core/generic.py", line 3266, in resample
return sampler.resample(self).__finalize__(self)
File "/Library/Python/2.7/site-packages/pandas/tseries/resample.py", line 98, in resample
rs = self._resample_timestamps(kind='timedelta')
File "/Library/Python/2.7/site-packages/pandas/tseries/resample.py", line 272, in _resample_timestamps
self._get_binner_for_resample(kind=kind)
File "/Library/Python/2.7/site-packages/pandas/tseries/resample.py", line 122, in _get_binner_for_resample
self.binner, bins, binlabels = self._get_time_delta_bins(ax)
File "/Library/Python/2.7/site-packages/pandas/tseries/resample.py", line 236, in _get_time_delta_bins
name=ax.name)
File "/Library/Python/2.7/site-packages/pandas/tseries/tdi.py", line 167, in __new__
closed=closed)
File "/Library/Python/2.7/site-packages/pandas/tseries/tdi.py", line 235, in _generate
index = _generate_regular_range(start, end, periods, offset)
File "/Library/Python/2.7/site-packages/pandas/tseries/tdi.py", line 895, in _generate_regular_range
stride = offset.nanos
AttributeError: 'Week' object has no attribute 'nanos'
Версии
>>> pd.__version__
'0.16.2'
>>> np.__version__
'1.10.1'
уверен, но как это отвечает на мои вопросы? –
Ну, на ваш вопрос было: Вопрос: Есть ли тип pandas timedelta, который не полагается на nano секунд? На что я ответил: Да, numpy.datetime64 Вы также спросили: Или: Есть ли у вас есть какие-либо более элегантный способ, чем использовать DateTime для timedelta? Ответ на этот вопрос: Нет, поскольку в numpy.datetime64 нет эквивалента datetime.datetime.now(). См. Http://docs.scipy.org/doc/numpy/reference/arrays.datetime.html. – kingledion