2016-05-25 3 views
1

У меня есть (проанализированный) столбец datetime в моем кадре данных Pandas. Теперь мне нужно создать несколько столбцов на основе этого одного столбца: один с годом, один с месяцем, часом, днем ​​недели и т. Д. В настоящее время я выполняю ряд отдельных применений, но это большой набор данных, и я повторяю несколько раз несколько раз. Есть ли лучший образец для этого? Можно ли применить возвращаемый DataFrame, который я затем вставляю за ним?Несколько столбцов, извлеченных из одного столбца Pandas

+2

Что является '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

ответ

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