How To Make Day Of The Week Flags From Datetime Index In Pandas
I have a dataframe df whose index is in datetime format. I would like to make 7 new binary fields/columns indicating if the date is Monday, Tuesday, Wednesday, Thursday, Friday, S
Solution 1:
If the data frame is for example:
>>>dfdate02018-01-0112018-01-0222018-01-0332018-01-0442018-01-0552018-01-0662018-01-0772018-01-0882018-01-0992018-01-10102018-01-11112018-01-12122018-01-13132018-01-14142018-01-15152018-01-16162018-01-17172018-01-18182018-01-19192018-01-20
We can use df['date'].dt.weekday
to obtain a number between 0
and 6
that specifies the day of the week.
We can then use pd.get_dummies(…)
[pandas-doc] to generate a "one-hot encoding":
>>>pd.concat((df,pd.get_dummies(df['date'].dt.weekday)),axis=1)date012345602018-01-01 100000012018-01-02 010000022018-01-03 001000032018-01-04 000100042018-01-05 000010052018-01-06 000001062018-01-07 000000172018-01-08 100000082018-01-09 010000092018-01-10 0010000102018-01-11 0001000112018-01-12 0000100122018-01-13 0000010132018-01-14 0000001142018-01-15 1000000152018-01-16 0100000162018-01-17 0010000172018-01-18 0001000182018-01-19 0000100192018-01-20 0000010
Here 0
, 1
, 2
, etc. are the day-of-the-week numbers.
For day names, you can use .day_name()
instead:
>>>pd.concat((df,pd.get_dummies(df['date'].dt.day_name())),axis=1)dateFridayMondaySaturdaySundayThursdayTuesdayWednesday02018-01-01 010000012018-01-02 000001022018-01-03 000000132018-01-04 000010042018-01-05 100000052018-01-06 001000062018-01-07 000100072018-01-08 010000082018-01-09 000001092018-01-10 0000001102018-01-11 0000100112018-01-12 1000000122018-01-13 0010000132018-01-14 0001000142018-01-15 0100000152018-01-16 0000010162018-01-17 0000001172018-01-18 0000100182018-01-19 1000000192018-01-20 0010000
Post a Comment for "How To Make Day Of The Week Flags From Datetime Index In Pandas"