Добавьте столбец минут к дате и времени в pandas - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть датафрейм с временем начала и продолжительностью операции. Я пытаюсь выяснить, как добавить длину (в минутах) ко времени начала, чтобы выяснить время окончания сеанса. Я запустил несколько разных вариантов одной и той же общей идеи и продолжаю получать ту же ошибку: «неподдерживаемый тип для компонента timedelta minutes: Series». Ниже приведена выдержка из кода:

data= {'Name': ['John', 'Peter'],
    'Start' : [2, 2],   
    'Length': [120, 90],
    }
df = pd.DataFrame.from_records(data)
df['Start'] = pd.to_datetime(df['Start'])
df['Length'] = pd.to_datetime(df['Length'])
df["tdiffinmin"] = df['Start'].apply(lambda x: x + pd.DateOffset(minutes = df["Length"])) 

Я также попробовал следующее как другие методы выполнения этой математики и продолжаю получать подобные ошибки.

df["tdiffinmin"] = df['Start'].apply(lambda x: x -pd.DateOffset(minutes = df["Length"])) 
df["tdiffinmin"] = (df['Start']. + timedelta(minutes = df["Length"])).dt.total_seconds() / 60
df['tdiffinmin'] = df['Start'] - pd.DateOffset(minutes = df["Length"])

Полный код считывает из набора данных (таблица Excel или CSV), заполняет Dataframe, и это часть математики, которую я делаю. Первоначально это было сделано со временем запуска и остановки, поэтому я знаю, что подобное возможно. В наборе данных Длина указана в минутах, а Начало - это дата и время, поэтому необходима дата и время.

1 Ответ

0 голосов
/ 30 апреля 2020

Вы должны преобразовать Length в timedelta, а не datetime:

df['Start'] = pd.to_datetime(df['Start'])
df['Length'] = pd.to_timedelta(df['Length'], unit='min')

df['tdiffinmin'] = df['Start'] + df['Length']

Вывод:

    Length   Name                         Start                    tdiffinmin
0 02:00:00   John 1970-01-01 00:00:00.000000002 1970-01-01 02:00:00.000000002
1 01:30:00  Peter 1970-01-01 00:00:00.000000002 1970-01-01 01:30:00.000000002
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...