问题描述
我正在努力改变用户对某些 YouTube 视频的看法。所以我为每个用户准备了一个 csv 文件,我在其中存储了他的评论、极性和发布每条评论的日期。任务是计算 alpha,它指的是一段时间内改变意见的平均值。但是我遇到了一个问题。 以下是我的脚本
from datetime import date,timedelta
def parse(mydate):
d,m,y=map(int,mydate.split('-'))
return date(d,y)
path = r'C:/Users/dell/project/script/base v2'
filenames = glob.glob(path + "/*.csv")
nfile=len(filenames)
Alphaa=[]
for k in range(0,nfile):
pd1=pd.read_csv(filenames[k])
dfa=[]
for i in range(len(pd1)-1):
date1=pd.to_datetime(pd1['publishedAt'][i:i+1])
date2=pd.to_datetime(pd1['publishedAt'][i+1:i+2])
date11=date1.to_string(index = False)
date21=date2.to_string(index = False)
date1=str(pd.DataFrame(pd1['publishedAt'][i:i+1]))
date2=str(pd.DataFrame(pd1['publishedAt'][i+1:i+2]))
duration=abs((parse(date21)-parse(date11)).days)
p1=pd1['polarity'][i]
p2=pd1['polarity'][i+1]
diff=p2-p1
if diff == 0:
alph="NULL"
UserOpinion="NULL"
else:
alph= duration/diff
UserOpinion=alph*p1
dfa.append(alph)
Alphaa.append(dfa)
这是回溯错误
ValueError Traceback (most recent call last)
<ipython-input-9-9704e3a864cf> in <module>
54 date1=str(pd.DataFrame(pd1['publishedAt'][i:i+1]))
55 date2=str(pd.DataFrame(pd1['publishedAt'][i+1:i+2]))
---> 56 duration=abs((parse(date21)-parse(date11)).days)
57
58 p1=pd1['polarity'][i]
<ipython-input-9-9704e3a864cf> in parse(mydate)
36 from datetime import date,timedelta
37 def parse(mydate):
---> 38 d,mydate.split('-'))
39 return date(d,y)
40
ValueError: invalid literal for int() with base 10: 'NaT'
我试图将结果的形式更改为浮点数,但它不起作用。有什么帮助吗?
解决方法
int() 方法采用整数文字,如 int('36')。在这里,您将 'Nat' 传递给 int(),因此会发生错误。 您必须在转换之前检查 mydate 的值。