Attributeerror can only use dt accessor with datetimelike values как исправить

Hi I am using pandas to convert a column to month. When I read my data they are objects: Date object dtype: object So I am first making them to date time and then try to make them as m...

Hi I am using pandas to convert a column to month.
When I read my data they are objects:

Date           object
dtype: object

So I am first making them to date time and then try to make them as months:

import pandas as pd
file = '/pathtocsv.csv'
df = pd.read_csv(file, sep = ',', encoding='utf-8-sig', usecols= ['Date', 'ids'])    
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month

Also if that helps:

In [10]: df['Date'].dtype
Out[10]: dtype('O')

So, the error I get is like this:

/Library/Frameworks/Python.framework/Versions/2.7/bin/User/lib/python2.7/site-packages/pandas/core/series.pyc in _make_dt_accessor(self)
   2526             return maybe_to_datetimelike(self)
   2527         except Exception:
-> 2528             raise AttributeError("Can only use .dt accessor with datetimelike "
   2529                                  "values")
   2530 

AttributeError: Can only use .dt accessor with datetimelike values

EDITED:

Date columns are like this:

0         2014-01-01         
1         2014-01-01         
2         2014-01-01         
3         2014-01-01         
4         2014-01-03       
5         2014-01-03         
6         2014-01-03         
7         2014-01-07         
8         2014-01-08         
9         2014-01-09 

Do you have any ideas?
Thank you very much!

Hi I am using pandas to convert a column to month.
When I read my data they are objects:

Date           object
dtype: object

So I am first making them to date time and then try to make them as months:

import pandas as pd
file = '/pathtocsv.csv'
df = pd.read_csv(file, sep = ',', encoding='utf-8-sig', usecols= ['Date', 'ids'])    
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month

Also if that helps:

In [10]: df['Date'].dtype
Out[10]: dtype('O')

So, the error I get is like this:

/Library/Frameworks/Python.framework/Versions/2.7/bin/User/lib/python2.7/site-packages/pandas/core/series.pyc in _make_dt_accessor(self)
   2526             return maybe_to_datetimelike(self)
   2527         except Exception:
-> 2528             raise AttributeError("Can only use .dt accessor with datetimelike "
   2529                                  "values")
   2530 

AttributeError: Can only use .dt accessor with datetimelike values

EDITED:

Date columns are like this:

0         2014-01-01         
1         2014-01-01         
2         2014-01-01         
3         2014-01-01         
4         2014-01-03       
5         2014-01-03         
6         2014-01-03         
7         2014-01-07         
8         2014-01-08         
9         2014-01-09 

Do you have any ideas?
Thank you very much!

Hi I am using pandas to convert a column to month.
When I read my data they are objects:

Date           object
dtype: object

So I am first making them to date time and then try to make them as months:

import pandas as pd
file = '/pathtocsv.csv'
df = pd.read_csv(file, sep = ',', encoding='utf-8-sig', usecols= ['Date', 'ids'])    
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month

Also if that helps:

In [10]: df['Date'].dtype
Out[10]: dtype('O')

So, the error I get is like this:

/Library/Frameworks/Python.framework/Versions/2.7/bin/User/lib/python2.7/site-packages/pandas/core/series.pyc in _make_dt_accessor(self)
   2526             return maybe_to_datetimelike(self)
   2527         except Exception:
-> 2528             raise AttributeError("Can only use .dt accessor with datetimelike "
   2529                                  "values")
   2530 

AttributeError: Can only use .dt accessor with datetimelike values

EDITED:

Date columns are like this:

0         2014-01-01         
1         2014-01-01         
2         2014-01-01         
3         2014-01-01         
4         2014-01-03       
5         2014-01-03         
6         2014-01-03         
7         2014-01-07         
8         2014-01-08         
9         2014-01-09 

Do you have any ideas?
Thank you very much!

#python-3.x #pandas #datetime

#python-3.x #панды #datetime

Вопрос:

Я пытаюсь преобразовать формат строки даты в числовой, но я получаю некоторую ошибку, мой столбец даты выглядит следующим образом :

 train['AVERAGE_ACCT_AGE'].head(6)
0     0yrs 0mon
1    1yrs 11mon
2     0yrs 0mon
3     0yrs 8mon
4     0yrs 0mon
5     1yrs 9mon
Name: AVERAGE_ACCT_AGE, dtype: object
 

Я попробовал этот код, чтобы добавить формат даты и времени к этой переменной.

 train['AVERAGE_ACCT_AGE']=pd.to_datetime(train['AVERAGE.ACCT.AGE'], format='%Y%m')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~Anaconda3libsite-packagespandascoretoolsdatetimes.py in _convert_listlike(arg, box, format, name, tz)
    376             try:
--> 377                 values, tz = conversion.datetime_to_datetime64(arg)
    378                 return DatetimeIndex._simple_new(values, name=name, tz=tz)

pandas_libstslibsconversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()

TypeError: Unrecognized value type: <class 'str'>

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-49-13f5c298f460> in <module>()
----> 1 train['AVERAGE_ACCT_AGE']=pd.to_datetime(train['AVERAGE.ACCT.AGE'], format='%Y-%m')

~Anaconda3libsite-packagespandascoretoolsdatetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, infer_datetime_format, origin, cache)
    449         else:
    450             from pandas import Series
--> 451             values = _convert_listlike(arg._values, True, format)
    452             result = Series(values, index=arg.index, name=arg.name)
    453     elif isinstance(arg, (ABCDataFrame, MutableMapping)):

~Anaconda3libsite-packagespandascoretoolsdatetimes.py in _convert_listlike(arg, box, format, name, tz)
    378                 return DatetimeIndex._simple_new(values, name=name, tz=tz)
    379             except (ValueError, TypeError):
--> 380                 raise e
    381 
    382     if arg is None:

~Anaconda3libsite-packagespandascoretoolsdatetimes.py in _convert_listlike(arg, box, format, name, tz)
    366                     dayfirst=dayfirst,
    367                     yearfirst=yearfirst,
--> 368                     require_iso8601=require_iso8601
    369                 )
    370 

pandas_libstslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas_libstslib.pyx in pandas._libs.tslib.array_to_datetime()

ValueError: time data 0yrs 0mon doesn't match format specified
 

После этого я попробовал этот код, чтобы добавить игнорирование ошибки в столбец.

 train['AVERAGE_ACCT_AGE']=pd.to_datetime(train['AVERAGE.ACCT.AGE'], format='%Y%m',errors='ignore',infer_datetime_format=True)
 

Его добавленный формат даты и времени, затем я этот код

     train['yrs']=train['AVERAGE_ACCT_AGE'].dt.year
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-50-39b8c6e07f77> in <module>()
----> 1 train['yrs']=train['AVERAGE_ACCT_AGE'].dt.year

~Anaconda3libsite-packagespandascoregeneric.py in __getattr__(self, name)
   4366         if (name in self._internal_names_set or name in self._metadata or
   4367                 name in self._accessors):
-> 4368             return object.__getattribute__(self, name)
   4369         else:
   4370             if self._info_axis._can_hold_identifiers_and_holds_name(name):

~Anaconda3libsite-packagespandascoreaccessor.py in __get__(self, obj, cls)
    130             # we're accessing the attribute of the class, i.e., Dataset.geo
    131             return self._accessor
--> 132         accessor_obj = self._accessor(obj)
    133         # Replace the property with the accessor object. Inspired by:
    134         # http://www.pydanny.com/cached-property.html

~Anaconda3libsite-packagespandascoreindexesaccessors.py in __new__(cls, data)
    323             pass  # we raise an attribute error anyway
    324 
--> 325         raise AttributeError("Can only use .dt accessor with datetimelike "
    326                              "values")
 

пожалуйста, помогите мне, как преобразовать тип объекта в числовой тип. Мне нужны столбцы по годам и месяцам отдельно.

 AttributeError: Can only use .dt accessor with datetimelike values
 

Комментарии:

1. Числовой? Вам нужен столбец с количеством лет, а другой с месяцами или месяцами, преобразованными в годы, в столбце years?

2. Мне нужны годы и месяцы столбцов отдельно.

3. Может помочь подумать о том, чего вы на самом деле хотите. 1 год и 11 месяцев — это не дата, это промежуток времени. Вы хотите отслеживать эту длину? Или получить дату задолго до настоящего времени? Или что-то еще?

4. да, ArKF я хочу, чтобы время представления

Ответ №1:

Столбец не Datetime имеет формата.

Вот быстрый способ перевести его в числовое значение. Я использую больше строк, чем необходимо.

 # doing this so we can have it in string format
train['AVERAGE_ACCT_AGE'] = train['AVERAGE_ACCT_AGE'].astype(str)

#Now remove the trailing or any such spaces
train['AVERAGE_ACCT_AGE'] = train['AVERAGE_ACCT_AGE'].map(lambda x: x.strip())

#Next we split and expand the column into 2 columns:
train[['yrs','months']] = train['AVERAGE_ACCT_AGE'].str.split(' ',n=1,expand=True)

#remove characters from new columns, 
#I am assuming the characters remain the same

train['yrs'] = train['yrs'].str.replace('yrs','')
train['months'] = train['months'].str.replace('mon','')
# Convert yrs to float
train['yrs'] = train['yrs'].astype('float')
# Convert months to float
train['months'] = train['yrs'].astype('float')

 

Надеюсь, это поможет.

Понравилась статья? Поделить с друзьями:
  • Attribute vb name syntax error
  • Attribute key error
  • Attribute error python почему
  • Attribute error python object has no attribute
  • Attrib exe ошибка при запуске приложения 0xc0000142