我的数据框有一个'Date'列,类型为object,但我想将其转换为pandas时间序列。所以我使用的是pd.to_datetime函数。此函数正在转换数据类型,但输出不稳定。
代码:
x1['TS'] = pd.to_datetime(x1['Date'])
x1['Day'] = x1['TS'].dt.dayofweek
x1[['Date', 'TS', 'Day']].iloc[::1430,:]
现在请仔细注意输出并查看Date和TS列。它应该是相同的,但在某些情况下,它是不同的。
输出:
Date TS Day
0 01-12-2017 2017-01-12 3
1430 01-12-2017 2017-01-12 3
2860 02-12-2017 2017-02-12 6
4290 03-12-2017 2017-03-12 6
5720 04-12-2017 2017-04-12 2
7150 05-12-2017 2017-05-12 4
8580 07-12-2017 2017-07-12 2
10010 08-12-2017 2017-08-12 5
11440 09-12-2017 2017-09-12 1
12870 09-12-2017 2017-09-12 1
14300 10-12-2017 2017-10-12 3
15730 11-12-2017 2017-11-12 6
17160 12-12-2017 2017-12-12 1
18590 13-12-2017 2017-12-13 2
20020 14-12-2017 2017-12-14 3
21450 15-12-2017 2017-12-15 4
22880 16-12-2017 2017-12-16 5
24310 17-12-2017 2017-12-17 6
25740 18-12-2017 2017-12-18 0
27170 19-12-2017 2017-12-19 1
28600 20-12-2017 2017-12-20 2
30030 21-12-2017 2017-12-21 3
31460 22-12-2017 2017-12-22 4
32890 23-12-2017 2017-12-23 5
34320 24-12-2017 2017-12-24 6
35750 25-12-2017 2017-12-25 0
37180 26-12-2017 2017-12-26 1
38610 27-12-2017 2017-12-27 2
40040 28-12-2017 2017-12-28 3
41470 29-12-2017 2017-12-29 4
42900 30-12-2017 2017-12-30 5
44330 31-12-2017 2017-12-31 6
45760 01-01-2018 2018-01-01 0
47190 02-01-2018 2018-02-01 3
48620 03-01-2018 2018-03-01 3
50050 04-01-2018 2018-04-01 6
51480 05-01-2018 2018-05-01 1
52910 06-01-2018 2018-06-01 4
54340 07-01-2018 2018-07-01 6
55770 08-01-2018 2018-08-01 2
57200 09-01-2018 2018-09-01 5
58630 10-01-2018 2018-10-01 0
60060 11-01-2018 2018-11-01 3
61490 12-01-2018 2018-12-01 5
62920 13-01-2018 2018-01-13 5
64350 14-01-2018 2018-01-14 6
65780 15-01-2018 2018-01-15 0
67210 16-01-2018 2018-01-16 1
答案 0 :(得分:3)
糟糕!看起来您的日期从第一天开始。你必须告诉熊猫相应地处理它。调用dayfirst
时,将True
标记设置为to_datetime
。
x1['TS'] = pd.to_datetime(x1['Date'], dayfirst=True)
答案 1 :(得分:3)
当您在没有指定格式的情况下传入时间时,Pandas会尝试以天真的方式猜测格式。假设您的一天实际上是您的月份,但是当它看到它是第13个月时,意识到不能是月份列和切换。
以下情况应该有效,但我更喜欢@cᴏʟᴅsᴘᴇᴇᴅ的解决方案,因为只是举起dayfirst标志会更简单。
要解决此问题,请将当前格式提供给to_datetime函数。
文档提供了以下示例,您可以根据自己的情况进行修改:
pd.to_datetime('13000101', format='%Y%m%d', errors='ignore')
请在此处查看详细信息:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html
时间格式约定(%Y表示等等)在这里:https://docs.python.org/3.2/library/time.html