Как использовать дату в индексе так же, как в столбце? - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь следовать отличному ответу от Как сделать флаги дня недели из индекса datetime в pandas. Код, который я использую:

pd.concat((testdf, pd.get_dummies(testdf.index.weekday)), axis=1)

testdf выглядит так:

            United Kingdom
Time (CET)                
2020-02-15         1739771
2020-02-16         1649750
2020-02-17         1887394
2020-02-18         1922006
2020-02-19         1957194
2020-02-20         1878259
2020-02-21         1890076
2020-02-22         1677928
2020-02-23         1688218
2020-02-24         1948947

А pd.get_dummies (testdf.index.weekday) выглядит так:

   0  1  2  3  4  5  6
0  0  0  0  0  0  1  0
1  0  0  0  0  0  0  1
2  1  0  0  0  0  0  0
3  0  1  0  0  0  0  0
4  0  0  1  0  0  0  0
5  0  0  0  1  0  0  0
6  0  0  0  0  1  0  0
7  0  0  0  0  0  1  0
8  0  0  0  0  0  0  1
9  1  0  0  0  0  0  0

И все же результат выглядит так:

    United Kingdom  0   1   2   3   4   5   6
1970-01-01 00:00:00.000000000   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000001   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000002   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000003   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000004   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000005   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000006   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000007   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000008   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
1970-01-01 00:00:00.000000009   NaN     NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-15 00:00:00.000000000   1739771.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-16 00:00:00.000000000   1649750.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-17 00:00:00.000000000   1887394.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-18 00:00:00.000000000   1922006.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-19 00:00:00.000000000   1957194.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-20 00:00:00.000000000   1878259.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-21 00:00:00.000000000   1890076.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-22 00:00:00.000000000   1677928.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-23 00:00:00.000000000   1688218.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN
2020-02-24 00:00:00.000000000   1948947.0   NaN     NaN     NaN     NaN     NaN     NaN     NaN

Я думаю, это потому, что когда я делаю индекс, используя set_index, тип изменился. Как я могу заставить это работать?

1 Ответ

1 голос
/ 20 июня 2020
import pandas as pd    
df = pd.concat((testdf.reset_index(), pd.get_dummies(testdf.index.astype('datetime64[ns]').day_name())), axis=1).set_index('Time (CET)')
df = df[['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']]
df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...