Python to_datetime (из int / float в 3 столбцах) - PullRequest
1 голос
/ 20 октября 2019

У меня есть 3 столбца: год (int), месяц (int), день (float) в моем наборе данных. Я хочу создать один столбец даты, используя to_datetime.

Ссылка на изображение примера данных: https://ibb.co/kSyz4Y0

Ссылка на весь набор данных: https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv

Я пытался преобразовать эти 3 столбца в 3 или 3 строки, но я всегда получаю одну и ту же ошибку - день выходит за пределы диапазона.

Мои вопросы:

1) ЧтоДолжен ли я иметь формат столбца, чтобы можно было использовать to_datimetime - int или string?

2) Можно или как создать дату из 3 столбцов с помощью to_datetime? Или я должен сначала объединить эти 3 столбца?

3) Как я могу устранить эту «проблему вне дня»? Я спросил доктора Google, но ни одно из решений не помогло мне.

data['td'] = pd.to_datetime(data['year'])

data['tm2'] = td + timedelta(days=1)

Как добавить столбцы месяца и дня в первую строку?

1 Ответ

1 голос
/ 20 октября 2019
  1. И int, и str в порядке, вам просто нужно изменить тип float вашего столбца Day. В любом случае, это нереально, у нас нет дробных дней в датах.

  2. date_series = pd.to_datetime(df) даст вам серию дат и времени, которую вы затем можете добавить к исходному фрейму данных.

Код теста:

import numpy as np
import pandas as pd

data = pd.DataFrame(columns=['Year', 'Month', 'Day'])
data = data.append({'Year': 2019, 'Month': 10, 'Day': 20}, ignore_index=True)
date_series = pd.to_datetime(data)
data['Date'] = date_series

Выход data:

    Year    Month   Day Date
0   2019    10      20  2019-10-20 

РЕДАКТИРОВАТЬ

import numpy as np
import pandas as pd

data = pd.DataFrame(columns=['Year', 'Month', 'Day', 'Gender', 'No. of Births'])
data = data.append({'Year': 2019, 'Month': 10, 'Day': 20, 'Gender': 'M', 'No. of Births': 5}, ignore_index=True)

date_prep = data.iloc[:, 0:3]
date_series = pd.to_datetime(date_prep)
data['Date'] = date_series

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