TypeError:int()参数必须是字符串,类字节对象或数字,而不是' slice'

时间:2017-02-27 19:19:36

标签: python pandas numpy time-series

我使用fbprophet数据集进行时间序列分析。数据集分别有两列datey

  date                 y
January 01, 1992      146376
February 01, 1992     147079 
March 01, 1992        159336   
April 01, 1992        163669
May 01, 1992          170068       


  date        y
01/01/92    146376
01/02/92    147079
01/03/92    159336
01/04/92    163669
01/05/92    170068

我首先使用pd.to_datetime将日期更改为日期时间格式,然后使用模型model = Prophet().fit(df)。但是,结果会一直显示TypeError: int() argument must be a string, a bytes-like object or a number, not 'slice'。反正有没有解决这个问题?

这是我的代码,

df.date = pd.to_datetime(df.date)
df['date'] = df['date'].dt.strftime('%Y-%m-%d')
model = Prophet()
model.fit(df)

当我运行model.fit(df)我上面提到的TypeError出现时。

2 个答案:

答案 0 :(得分:2)

大多数回归和分类器方法只接受数字或字符串dtypes,因此此错误消息会抱怨您的<Directory /var/www/FlaskApp/Static/> Order allow,deny Allow from all </Directory> 列。

假设我们有以下DataFrame:

datetime

我们可以创建一个数字列 - UNIX TimeStamp(自In [63]: df Out[63]: date y 0 1992-01-01 146376 1 1992-01-02 147079 2 1992-01-03 159336 3 1992-01-04 163669 4 1992-01-05 170068 UTC以来的秒数):

1970-01-01 00:00:00

我们可以将其转换回In [64]: df['unix_ts'] = df.date.astype(np.int64) // 10**9 In [65]: df Out[65]: date y unix_ts 0 1992-01-01 146376 694224000 1 1992-01-02 147079 694310400 2 1992-01-03 159336 694396800 3 1992-01-04 163669 694483200 4 1992-01-05 170068 694569600 dtype:

datetime

答案 1 :(得分:2)

我使用先知有类似的问题。在我的情况下,问题是'ds'列中的重复日期(即日期)

我添加了

df=df.drop_duplicates(['date'], keep='last')

(显然,从功能上讲这没有意义,但它可能会隔离你的问题)