2017-02-08 8 views
0

У меня есть несколько столбцов, где некоторые значения - DateTime, а некоторые - просто год. Я хотел бы индексировать значения datetime так, что если I = I[:4], я получаю год для переменной I после цикла через столбец вместо ошибки, указывающей 'datetime.datetime' object is not subscriptable. По сути, я хотел бы оставить все, начиная с datetime, а не на год в столбце со смешанными ints, которые имеют значения, которые являются только годом, и экземпляры datetime, из которых мне бы хотелось только получить год.Как индексировать DateTime в Pandas dataframe

ответ

0

Я не совсем уверен, что вы пытаетесь сделать, и, к сожалению, я не могу оставлять комментарии (пока).

Из чего я думаю, у вас есть DataFrame со столбцом смешанных типов, и вы хотите преобразовать все значения с типом datetime в int. В качестве примера, вот DataFrame:

>>> data = [[1, 1990], [2, datetime(1991, 1, 1)]] 
    >>> df = pd.DataFrame(data, columns=['id', 'time']) 
    >>> df 
     id     time 
    0 1     1990 
    1 2 1991-01-01 00:00:00 

Вы можете использовать map (link) для преобразования второго столбца:

>>> df.loc[:,'date'] = df.loc[:,'date'].map(lambda x: x.year if isinstance(x, datetime) else x) 
    >>> df 
     id time 
    0 1 1990 
    1 2 1991 
+0

Спасибо! Это именно то, что я искал. – Min