Извлекать день недели более Pythonically - PullRequest
0 голосов
/ 17 января 2019

У меня есть df с полями год, месяц, день, отформатированные как целые числа. Я использовал следующее, чтобы извлечь день недели.

Как я могу сделать это более питонически?

### First Attempt - Succeeds
lst = []
for i in zip(df['day'], df['month'], df['year']):
    lst.append(calendar.weekday(i[2], i[1], i[0]))
df['weekday'] = lst

### Second Attempt -- Fails
df['weekday'] = df.apply(lambda x: calendar.weekday(x.year, x.month, x.day))

AttributeError: ("'Series' object has no attribute 'year'", 'occurred at index cons_conf')

1 Ответ

0 голосов
/ 17 января 2019

Попробуйте .to_datetime и аксессор dt:

import pandas as pd

data = pd.DataFrame({'year': [2018, 2018, 2018], 'month': [12, 12, 12], 'day': [1, 2, 3]})

data['weekday'] = pd.to_datetime(data[['year', 'month', 'day']]).dt.weekday

print(data)

Предоставление:

   year  month  day  weekday
0  2018     12    1        5
1  2018     12    2        6
2  2018     12    3        0

Обратите внимание, что день недели индексируется нулем.

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