Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 从周数转换为日期时间不工作:";时间数据';201T&x27;与格式不匹配';%Y';(比赛)";_Python_Pandas - Fatal编程技术网

Python 从周数转换为日期时间不工作:";时间数据';201T&x27;与格式不匹配';%Y';(比赛)";

Python 从周数转换为日期时间不工作:";时间数据';201T&x27;与格式不匹配';%Y';(比赛)";,python,pandas,Python,Pandas,我目前有一个dataframe系列,其输出格式为YWW,其中WW代表工作周 我已将其转换为两个新专栏,一个用于工作周,另一个用于年度,如下所示: derp = pd.DataFrame(); derp['Releasedate'] = sndf['Releasedate'] #releasedate is a string derp['Week'] = sndf.Releasedate.str.slice(start=4); derp['Year'] = sndf.Releasedate.str

我目前有一个dataframe系列,其输出格式为YWW,其中WW代表工作周

我已将其转换为两个新专栏,一个用于工作周,另一个用于年度,如下所示:

derp = pd.DataFrame();
derp['Releasedate'] = sndf['Releasedate'] #releasedate is a string
derp['Week'] = sndf.Releasedate.str.slice(start=4);
derp['Year'] = sndf.Releasedate.str.slice(stop=4);
derp['Year'] = '201' + derp['Year'].astype(str);
derp=derp.dropna()

给我一个具有以下输出的数据帧:

__|发布日期|周|年
0 | 728 | 28 | 2017
2017年1 | 742 | 42 |
2 | 920 | 20 | 2019
3 | 813 | 13 | 2008

但是,当我尝试使用以下代码将其转换为datetime时

derp['New'] = pd.to_datetime(derp.Year.astype(str), format='%Y') + \
             pd.to_timedelta(derp.Week.mul(7).astype(str) + ' days')
它给了我以下错误:
ValueError:时间数据“201T”与格式“%Y”不匹配(匹配)

我如何克服这个错误


谢谢你的帮助

您的转换比需要的更复杂。试试这个:

derp['New'] = pd.to_datetime(derp['Year'], format='%Y') \
                + pd.to_timedelta(derp['Week'].mul(7), unit='d')
结果:

2017-07-16
2017-10-22
2019-05-21
2008-04-01

您的转换比需要的更复杂。试试这个:

derp['New'] = pd.to_datetime(derp['Year'], format='%Y') \
                + pd.to_timedelta(derp['Week'].mul(7), unit='d')
结果:

2017-07-16
2017-10-22
2019-05-21
2008-04-01

如果要将周数乘以7,则必须将周数转换为int。如果你把它们当作字符串来处理,你会一个接一个地得到44

这应该可以

import pandas as pd

data = {'Releasedate':['744','812']}
sndf = pd.DataFrame(data)
derp = pd.DataFrame()
derp['Releasedate'] = sndf['Releasedate'] #releasedate is a string
derp['Week'] = sndf.Releasedate.str.slice(start=1);
derp['Year'] = sndf.Releasedate.str.slice(stop=1);
derp['Year'] = '201' + derp['Year'].astype(str);
derp=derp.dropna()

derp['New'] = pd.to_datetime(derp.Year.astype(str), format='%Y') + \
             pd.to_timedelta(derp.Week.astype(int).mul(7).astype(str) + ' days')

如果要将周数乘以7,则必须将周数转换为int。如果你把它们当作字符串来处理,你会一个接一个地得到44

这应该可以

import pandas as pd

data = {'Releasedate':['744','812']}
sndf = pd.DataFrame(data)
derp = pd.DataFrame()
derp['Releasedate'] = sndf['Releasedate'] #releasedate is a string
derp['Week'] = sndf.Releasedate.str.slice(start=1);
derp['Year'] = sndf.Releasedate.str.slice(stop=1);
derp['Year'] = '201' + derp['Year'].astype(str);
derp=derp.dropna()

derp['New'] = pd.to_datetime(derp.Year.astype(str), format='%Y') + \
             pd.to_timedelta(derp.Week.astype(int).mul(7).astype(str) + ' days')

@我试着使用
errors='procure'
像这样:
derp['New']=pd.to_datetime(derp.Year.astype(str),format='%Y',errors='procure')+\pd.to_timedelta(derp.Week.mul(7.astype(str)+'days')
。但是,它给了我一个溢出错误“OverflowerError:int太大了,无法转换”@ALollz我试着使用
errors='concure'
像这样:
derp['New']=pd.to_datetime(derp.Year.astype(str),format='%Y',errors='concure')+\pd.to_timedelta(derp.Week.mul(7).astype(str)+'days')
。但是,它给了我一个溢出错误“OverflowerError:int太大,无法转换”,因此,我不知道日期时间是否是问题所在。当我使用示例数据集“data”时,一切都正常工作,即使是我的旧代码。然而,当我使用实际的数据集时,它仍然会给我同样的错误
sndf['Releasedate']
是一个由1000个字符串组成的pd系列,所有这些字符串都是一个3位数的数字,就像示例数据集一样,必须查看您正在使用的sndf数据集。你的来源是什么,你是从文件中读取的吗?所以我调查了数据集,主要的问题是,出于某种原因,前几个数字中的一些是字母。一旦我从我的数据集中过滤了所有这些数据,现在一切都正常了。所以,我不知道日期时间是否是问题所在。当我使用示例数据集“data”时,一切都正常工作,即使是我的旧代码。然而,当我使用实际的数据集时,它仍然会给我同样的错误
sndf['Releasedate']
是一个由1000个字符串组成的pd系列,所有这些字符串都是一个3位数的数字,就像示例数据集一样,必须查看您正在使用的sndf数据集。你的来源是什么,你是从文件中读取的吗?所以我调查了数据集,主要的问题是,出于某种原因,前几个数字中的一些是字母。一旦我从我的数据集中过滤了所有这些,现在一切都正常了。