2017-02-27 13 views
2

私はfbprophetデータセットを時系列解析に使用しました。データセットには、それぞれdateyという2つの列があります。TypeError:int()引数は、文字列、バイトのようなオブジェクトまたは数字で、 'slice'でなければなりません。

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'を表示し続けます。とにかくこの問題を解決するには?私は上記のmodel.fit(df)TypeErrorが現れ実行すると、ここで

は私のコードは、

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

です。

答えて

2

ほとんどの回帰および分類メソッドでは数値または文字列型しか受け入れられないため、このエラーメッセージはdatetime列について不平を言っています。これは、我々はそれを変換する方法である

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 

: - UNIXタイムスタンプ(1970-01-01 00:00:00 UTCからの秒数)

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 

は、我々は数値列を作成することができます。

私たちは、次のデータフレームを持っていると仮定datetime dtypeに戻る:

In [66]: pd.to_datetime(df.unix_ts, unit='s') 
Out[66]: 
0 1992-01-01 
1 1992-01-02 
2 1992-01-03 
3 1992-01-04 
4 1992-01-05 
Name: unix_ts, dtype: datetime64[ns] 
+0

あなたの答えをありがとう。しかし、私はまだ使用後に同じTypeErrorを取得します。 'df ['unix_ts'] = df.date.astype(np.int64)// 10 ** 9; df ['date'] = pd.to_datetime(df.unix_ts、unit = 's'); df = df.drop(labels = ['unix_ts']、axis = 1) ' – Peggy

2

私は似ています問題は預言者を使っている。私の場合は問題は、私は

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

(明らかに、機能的にこれは意味がありませんが、それはあなたの問題を特定可能性がある)

を追加した「DSの列(すなわち日付)

で重複日付でした

+1

はい。私は 'resample()'を使って重複した日付をまとめました。どうもありがとうございました! – Peggy

関連する問題