Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解析日期时间_Python_Pandas_Datetime_Parsing - Fatal编程技术网

Python 如何解析日期时间

Python 如何解析日期时间,python,pandas,datetime,parsing,Python,Pandas,Datetime,Parsing,我试图解析datetime,数据集如下所示 资料 日期卖出买入 0 2016-01-03 22:00:01.446 1.0873 1.0875 1 2016-01-03 22:00:01.799 1.08714 1.08748 2 2016-01-03 22:00:01.981 1.08702 1.08748 3 2016-01-03 22:00:04.548 1.0870600000000001 1.0875 4 2016-01-03 22:00:07.478 1.08

我试图解析datetime,数据集如下所示

资料
日期卖出买入
0   2016-01-03 22:00:01.446 1.0873  1.0875
1   2016-01-03 22:00:01.799 1.08714 1.08748
2   2016-01-03 22:00:01.981 1.08702 1.08748
3   2016-01-03 22:00:04.548 1.0870600000000001  1.0875
4   2016-01-03 22:00:07.478 1.08705 1.08749
5   2016-01-03 22:00:30.293 1.08704 1.08748
6   2016-01-03 22:00:34.876 1.08704 1.0874700000000002
7   2016-01-03 22:00:41.479 1.08714 1.0874700000000002
8   2016-01-03 22:00:44.739 1.08714 1.08746
9   2016-01-03 22:00:44.789 1.08704 1.08746
所有代码如下所示

将熊猫作为pd导入
将numpy作为np导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
导入glob
test=pd.read\u csv(“D:\DAT\u ASCII\u eurudu\u T\u 201612.csv”,header=None,name=['Date','sell\u A','buy\u A','unknown'])
测试头()
pd.to_datetime(test.Date,格式=“%yy%dd%mm%HH%mm%SS%fff”)
我得到的错误也显示在下面

错误
---------------------------------------------------------------------------
错误回溯(最近一次呼叫上次)
在里面
---->1 pd.to_datetime(test.Date,格式=“%yy%dd%mm%HH%mm%SS%fff”)
F:\anaconda3\lib\site packages\pandas\core\tools\datetimes.py in to_datetime(arg、errors、dayfirst、yearfirst、utc、格式、精确、单位、推断日期时间格式、原点、缓存)
726结果=参数映射(缓存数组)
727其他:
-->728 values=convert_listlike(参数值,格式)
729结果=arg.\u构造函数(值,索引=arg.index,名称=arg.name)
730 elif isinstance(参数,(abCDATA帧,abc.MutableMapping)):
F:\anaconda3\lib\site packages\pandas\core\tools\datetimes.py in\u convert\u list like\u datetimes(参数、格式、名称、tz、单位、错误、推断日期时间格式、日期优先、年份优先、精确)
398试试:
399结果,时区=数组\u strptime(
-->400参数,格式,精确=精确,错误=错误
401                     )
402如果格式为“%Z”或格式为“%Z”:
熊猫\\u libs\tslibs\strptime.pyx在熊猫中。_libs.tslibs.strptime.array_strptime()
熊猫\\u libs\tslibs\strptime.pyx在熊猫中。_libs.tslibs.strptime.array_strptime()
pandas\\\ libs\tslibs\strptime.pyx在pandas中。\ libs.tslibs.strptime.TimeRE.compile()
F:\anaconda3\lib\re.py处于编译状态(模式、标志)
232 def编译(模式,标志=0):
233“编译正则表达式模式,返回模式对象。”
-->234返回编译(模式、标志)
235
236 def清除():
F:\anaconda3\lib\re.py在编译中(模式、标志)
284如果不是sre_compile.isstring(模式):
285 raise TypeError(“第一个参数必须是字符串或编译模式”)
-->286 p=sre_compile.compile(模式、标志)
287如果不是(标志和调试):
288如果len(\u cache)>=\u MAXCACHE:
F:\anaconda3\lib\sre\u compile.py in compile(p,标志)
762如果是字符串(p):
763模式=p
-->764 p=sre_parse.parse(p,标志)
765其他:
766模式=无
F:\anaconda3\lib\sre\u parse.py在解析中(str、标志、模式)
922
923尝试:
-->924 p=_parse_sub(源、模式、标志和SRE_标志详细,0)
925除冗长外:
926#模式内的详细标志已打开。成为
F:\anaconda3\lib\sre\u parse\u sub中的parse.py(源、状态、详细、嵌套)
418虽然正确:
419 itemsappend(_parse(源、状态、详细、嵌套+1、,
-->420非嵌套和非项目)
421如果不是sourcematch(“|”):
422中断
F:\anaconda3\lib\sre_parse.py in_parse(源、状态、详细、嵌套、第一个)
805 group=state.opengroup(名称)
806除作为错误的错误外:
-->807从“无”引发源代码错误(err.msg,len(name)+1)
808 sub_verbose=((verbose或(add_flags&SRE_FLAG_verbose))和
809非(del_标志和SRE_标志详细))
错误:将组名“m”重新定义为组5;第3组位于113位
问题:
如何排序?

使用日期时间格式-
%Y-%d-%m%H:%m:%S.%f
。或者,您可以使用
read\u csv

In [6]: import pandas as pd

In [7]: df = pd.read_csv("a.csv", parse_dates=["Date"])

In [8]: df.dtypes
Out[8]:
Date      datetime64[ns]
sell_B           float64
buy_B            float64
dtype: object

这两者都应该起作用:

df["Date"] = df["Date"].apply(lambda x: datetime.strptime(x, '%Y-%d-%m %H:%M:%S.%f'))
#df["Date"] = pd.to_datetime(df["Date"], format='%Y-%d-%m %H:%M:%S.%f')

print(df["Date"].dtype)
#datetime64[ns]

它引发此错误:时间数据“20161201 000003290”与格式“%Y-%d-%m%H:%m:%S”不匹配。%f“20161201 000003290不是您在df中提供的字符串。这里是这样的
2016-01-03 22:00:01.446
,对我来说很好。如果您确实有一个日期字符串,如
20161201 000003290
,则必须将格式更改为
“%Y%d%m%H%m%S%f”
(可能更改月份和日期,我无法从您的示例中看到)你能解释一下原始代码中的错误以及为什么你的代码是正确的吗?我想提问者很清楚是格式错误,否则它不会是一个被接受的答案。但对于我,作为一个未来的读者,不清楚是什么错了。关于SO的问题和答案应该主要对所有读者都有帮助,而不仅仅是询问者。您能解释一下原始代码中出现错误的原因吗?@mkrieger1补充了解释
df["Date"] = df["Date"].apply(lambda x: datetime.strptime(x, '%Y-%d-%m %H:%M:%S.%f'))
#df["Date"] = pd.to_datetime(df["Date"], format='%Y-%d-%m %H:%M:%S.%f')

print(df["Date"].dtype)
#datetime64[ns]