Python 如何以与列中相同的方式在索引中使用日期?
我正试着从中找出一个很好的答案。我使用的代码是:Python 如何以与列中相同的方式在索引中使用日期?,python,pandas,Python,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
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
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
和pd.get_假人(testdf.index.weekday)看起来像:
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
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
但结果看起来是:
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
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\u index
创建索引时,类型发生了变化。我如何才能让它工作?reset_index()在这里到底做了什么?在您在中指出的示例中,“date”不是一个索引,而是一个普通列。在数据集中,df.reset_index()将索引转换为普通列。谢谢。你知道如何让day\u name()
也能工作吗?testdf.index.day_name()无效。如周一、周二、周三等?是。链接答案中的答案具有pd.concat((df,pd.get_dummies(df['date'].dt.day_name()),axis=1)
这为列提供了正确的名称。
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