Создать и инициализировать столбец времени Python - PullRequest
0 голосов
/ 04 марта 2020

Мне нужно добавить столбец времени к существующему фрейму данных и инициализировать его. Я попробовал эту строку кода df['date']=datetime.time(0, 0, 0) в небольшом скрипте:

import pandas as pd
import datetime
df = pd.DataFrame({'column1':[34,54,32,23,26]})
df['date']=datetime.time(0, 0, 0)
print(df['date'])

вывод:

0    00:00:00
1    00:00:00
2    00:00:00
3    00:00:00
4    00:00:00

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

dfreez['delta']=datetime.time(0, 0, 0)

TypeError: descriptor 'time' for 'datetime.datetime' objects doesn't apply to 'int' object

это часть моего кода:

import pandas as pd
dfreez = pd.read_excel('file_name.xlsx',header=0, index= False)
from datetime import datetime
dfreez['delta']=datetime.time(0, 0, 0)

Я не понимаю, что пошло не так!

1 Ответ

1 голос
/ 04 марта 2020

import datetime и from datetime import datetime и не одинаковы.

После первого локальная переменная datetime является ссылкой на модуль. Таким образом, вы можете получить доступ к классу datetime с помощью datetime.datetime и к классу time с помощью datetime.time

Через секунду локальная переменная datetime является ссылкой на класс datetime. Таким образом, у вас нет (прямого *) доступа к классу time.

Вы должны просто использовать:

import datetime

во втором фрагменте, точно так же, как это было сделано в первом.


(*) К вашему сведению: это все еще возможно с некрасивым sys.modules['datetime'].time. Но никогда не притворяйся, что я посоветовал тебе сделать это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...