Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 转换为日期时间时导致问题的格式(数据_字符串[found.end():]))_Python_Pandas_Datetime_Dataframe_Strptime - Fatal编程技术网

Python 转换为日期时间时导致问题的格式(数据_字符串[found.end():]))

Python 转换为日期时间时导致问题的格式(数据_字符串[found.end():])),python,pandas,datetime,dataframe,strptime,Python,Pandas,Datetime,Dataframe,Strptime,我正在加载很多csv文件,我想打印这些文件,它们的列标题表示日期和时间 例如: 14/01/2015 14:27 14/01/2015 14:27 29.97299 30.05902 30.00391 30.09555 由于某些原因,不同的文件以不同的格式加载这些日期和时间,而我在转换它们时遇到了麻烦 我当前的代码: for n, f in enumerate(files): df = pd.read_csv(filePath+f, delimiter=',',index_

我正在加载很多csv文件,我想打印这些文件,它们的列标题表示日期和时间

例如:

14/01/2015 14:27 14/01/2015 14:27
29.97299    30.05902
30.00391    30.09555
由于某些原因,不同的文件以不同的格式加载这些日期和时间,而我在转换它们时遇到了麻烦

我当前的代码:

for n, f in enumerate(files):
    df = pd.read_csv(filePath+f, delimiter=',',index_col=0)
    times = []
    print df.columns.values[1]
    for i, t in enumerate(df.columns.values):
        if t[2]=='/':
            time = datetime.strptime(t, '%d/%m/%Y %H:%M')
        elif t[4]=='-':
            time = datetime.strptime(t, '%Y-%m-%d %H:%M:%S')
        else:
            print "Is it a date? ", t
        times.append(time)
    timelists.append(times)
    fig = plt.figure()
    df.plot()
    plt.savefig(figdir+(n+1).__str__()+"_"+f+".png", bbox_inches='tight',dpi=300)
    print "Fig", n+1
    plt.close(n)
产生以下结果:

2015-01-1410:50:19
图1
2015-01-14 14:01:15
图2
2015-01-14 14:13:08
图3
2015-01-14 14:27:53
图4
2015-01-14 14:40:00
图5
15/01/2015 13:03
回溯(最近一次呼叫最后一次):
后跟一个错误(带回溯):

文件“D:/data/scripts/myscript.py”,第29行,在
time=datetime.strtime(t,'%d/%m/%Y%H:%m')
文件“C:\Users\me\AppData\Local\Continuum\Anaconda2\lib\\u strtime.py”,第335行,在_strtime中
数据_字符串[found.end():])
ValueError:未转换的数据仍然存在:.1

我不明白为什么会出现这个错误,最后打印的日期是我指定的格式,不是吗?
data_string[found.end():])
是什么意思?

该错误消息表示
strtime
正在转换一个字符串,该字符串中包含的信息超过了格式中指定的信息,例如秒或微秒。例如,如果我尝试使用格式为
%d/%m/%Y%H:%m
strtime
推送“14/01/2015 14:27:00.000”,则会出现相同的错误。为了在我的示例中实现这一点,我需要在
strtime
-
%d/%m/%Y%H:%m:%S.%f
中使用以下格式

不确定你的文件到底是什么样的,但熊猫图书馆对日期/时间有很好的理解。我不确定我以前是否确实遇到过您的问题,但根据我的经验,它通常会正确地猜测格式,而不会太麻烦(如果有的话)


编辑:事实上,如果您阅读了与pandas一起发布的文件片段,它会将日期作为列名,并将
.1
附加到第二列,因为列名应该是唯一的。似乎
.1
正是调用
strtime
中指定的格式未捕获的日期\时间字符串的一部分。因此,也许您在处理过程中的某个时候已经在使用熊猫了。请注意,熊猫在默认情况下不会生成列名
datetime
对象,它会假定它们是字符串。

你说得对!我正在编辑这个问题。所以问题是,为什么熊猫读取不同格式的文件,而在视觉上(如果我在excel中打开它们),它们看起来是一样的。或者可能是一个新问题……好的,一个没有秒数的错误数据文件,这就是为什么它以不同的格式读取。现在应该可以了。谢谢