基数为 10 的 int() 的无效文字:'NaT'

问题描述

我正在努力改变用户对某些 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 的值。