Ошибка в pandas.to_datetime (String) - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь создать столбец типа, используя значения из другого столбца, такие как год и месяц, в качестве строковых полей. А день - это статическое число, учитывая первый день месяца, т. Е. 1-й.

Пример:

year . month
2015 . 12
2016 . 1
2016 . 2

Я пытался использовать следующие методы для создания столбца Дата, но не смог

df['Date'] = pd.to_datetime(dict(year=df['year'],month=df['month'],day=1))

df['Date'] = pd.to_datetime(str(month)+str(month)+str(1),format=%Y%m%d)

df['Date'] = df.apply(lambda x:dt.strptime(str(month)+str(month)+str(1)),format=%Y%m%d)

Ни один из вышеперечисленных подходов не помог мне. Из-за требований кластера, используя версию PANDAS 0.17. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 27 июня 2018

первый день каждого месяца? Легко.

pd.to_datetime(df.assign(day=1))

0   2015-12-01
1   2016-01-01
2   2016-02-01
dtype: datetime64[ns]

Если вы столкнулись с ошибками преобразования, попробуйте добавить аргумент errors='coerce':

pd.to_datetime(df.assign(day=1))

Здесь следует отметить, что pd.to_datetime при работе с DataFrames потребуется по крайней мере столбцы года, месяца и дня.

В качестве альтернативы, передайте столбец из одной строки в to_datetime.

pd.to_datetime(df.assign(day=1).astype(str).agg('-'.join, axis=1))
# pd.to_datetime(df[['col1', 'col2']].assign(day=1).astype(str).agg('-'.join, axis=1))

0   2015-12-01
1   2016-01-01
2   2016-02-01
dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...