2017-07-11 9 views
1

これは私のパンダデータフレームのデータです。あなたは日時書式がここYYYYMMDDHHMMSSで見ることができるように、最新のdateTimeのデリミタなしでint64(YYYYMMDDHHMMSS)のカラムをdatetime64に変換

でファイルを見つける存在fileNameにを複製する場合、私はので、私は確認することができdatetime64のdateTime列を変換したいです区切り文字なし

     filePath  dateTime fileName 
0 Line20170601142525_line1.dat 20170601142525 line1 
1 Line20170601142525_line2.dat 20170601142525 line2 
2 Line20170601142526_line2.dat 20170601142526 line2 
3 Line20170601142526_line3.dat 20170601142526 line3 

Process finished with exit code 0 

これは私のコードです

formattedFileDirectory['dateTime'] = pandas.to_datetime(formattedFileDirectory['dateTime'], format='%Y%M%d%H%m%S') 

私は、私はあなたがあなたの前にstring型にintタイプからDateTime列を変換する必要があると信じて、私は文字列として列を設定した場合、私はこのエラー

ValueError: unconverted data remains: 5 

答えて

2

を取得し、このエラーに

TypeError: 'int' object is unsliceable 

を取得それにpd.to_datetimeを呼び出してください。

「変換されていないデータ」に関するValueErrorを取得した場合は、通常、指定した文字列またはフォーマットのいずれかが不良であることが伝えられます。 '%Y%M%d%H%m%S''%Y%m%d%H%M%S'に変更してみてください。書式文字列here(下から一番下までスクロールしてください)に関するドキュメントがあります。

0

私は、これはあなたがpandas.DataFrame.applyを使用して探しているものであると信じて:

df['dateTime'] = df['dateTime'].apply(lambda x: pd.to_datetime(str(x), format='%Y%m%d%H%M%S')) 

それは遅いですので、あなたがapplyを使用して好きではない場合(それがループだcuzの)あなたはまだ、この使用することができます

df['dateTime'] = pd.to_datetime(df['dateTime'].astype(str),format='%Y%m%d%H%M%S') 

出力:

     filePath   dateTime fileName 
0 Line20170601142525_line1.dat 2017-06-01 14:25:25 line1 
1 Line20170601142525_line2.dat 2017-06-01 14:25:25 line2 
2 Line20170601142526_line2.dat 2017-06-01 14:25:26 line2 
3 Line20170601142526_line3.dat 2017-06-01 14:25:26 line3 
+1

私のように、pd.to_datetime上 ')(' .apply使用することをお勧めしません関数そのものは、データの列を処理するのに適しています。 'apply'メソッドは実際にはフードのforループです。 – CaptainMeow

+0

あなたが正しいです、私は@CaptainMeowを更新しました。 –

関連する問題