У меня есть (проанализированный) столбец datetime в моем кадре данных Pandas. Теперь мне нужно создать несколько столбцов на основе этого одного столбца: один с годом, один с месяцем, часом, днем недели и т. Д. В настоящее время я выполняю ряд отдельных применений, но это большой набор данных, и я повторяю несколько раз несколько раз. Есть ли лучший образец для этого? Можно ли применить возвращаемый DataFrame, который я затем вставляю за ним?Несколько столбцов, извлеченных из одного столбца Pandas
1
A
ответ
3
если dtype
уже datetime
, то вы можете использовать vectorised DATETIME аксессор dt
добавить столбцы:
In [11]:
df = pd.DataFrame({'date':pd.date_range(dt.datetime(2016,1,1), end = dt.datetime(2016,1,10))})
df
Out[11]:
date
0 2016-01-01
1 2016-01-02
2 2016-01-03
3 2016-01-04
4 2016-01-05
5 2016-01-06
6 2016-01-07
7 2016-01-08
8 2016-01-09
9 2016-01-10
In [13]:
df['year'],df['month'],df['day'], df['day_of_week'] = df['date'].dt.year, df['date'].dt.month, df['date'].dt.day, df['date'].dt.dayofweek
df
Out[13]:
date year month day day_of_week
0 2016-01-01 2016 1 1 4
1 2016-01-02 2016 1 2 5
2 2016-01-03 2016 1 3 6
3 2016-01-04 2016 1 4 0
4 2016-01-05 2016 1 5 1
5 2016-01-06 2016 1 6 2
6 2016-01-07 2016 1 7 3
7 2016-01-08 2016 1 8 4
8 2016-01-09 2016 1 9 5
9 2016-01-10 2016 1 10 6
Что является 'dtype' здесь? Если это уже 'datetime', вы можете просто выполнить' df [['year', 'day', 'month', 'day_of_week']] = df ['date']. Dt.year, df ['date'] .dt.month, df ['date']. dt.day, df ['date']. dt.dayofweek' и т. д. – EdChum