2017-12-18 17 views
1

xlsxファイルからpandasに時刻データを読み込んでいるとき。 10進数値で表示されますPython Pandas reading time

例:9:23:27 AMは.391284722として表示されます。 フォーマットセルを使用して時間に変換して時刻を修正することで修正できます。 しかし、私はパンダを使い切るのが好きで、卓越していません。

Iの値を呼び出して、日付時刻オブジェクトに df.TIME = pd.to_datetime(df.TIME)

それを変換するときに、この日付に1970-01-01 所望の時間に変化が9: 23:27 AM

ご協力いただきまして誠にありがとうございます。 ありがとうございます

+0

'pandas.to_datetime'は、それが明示的に年/月/日のスタンプを必要とする暗黙の推論システムを持っています。 noneを受け取った場合は、時刻を1970-01-01で始まるdatetimeオブジェクトに変換します。 'TIME'列で何を達成しようとしていますか? – HSchmachty

+0

私はパンダがコードをどのようにコード化して、それを9.23.27として読むか、.391284722 ....と読んでほしいと思っています。 –

答えて

0

質問には、時間欄の最終目的を明確にするためにいくつかを使用することができます。ただし、一般的な目的でにformatというキーワードを使用してみてください。 http://strftime.org/

+0

時間列には日付がありません....時間だけが関与しています。私は時間を読むとき、それは10進数値に時間をカバーします。 –

2

デモ:

df = pd.read_excel(filename, dtype={'col_name':str}) 

In [51]: df 
Out[51]: 
      time 
0 9:23:27 AM 
1 12:59:59 AM 

In [52]: df['time2'] = pd.to_timedelta(df['time']) 

In [53]: df 
Out[53]: 
      time time2 
0 9:23:27 AM 09:23:27 
1 12:59:59 AM 12:59:59 

In [54]: df.dtypes 
Out[54]: 
time    object 
time2 timedelta64[ns] 
dtype: object 

UPDATE:浮動小数点数を変換するために(#

を文字列としてその列を読ん

df.TIME=pd.to_datetime(df.TIME, format='%I:%M%S %p') 

の書式設定については、このウェブサイトを参照してください。秒)Excelから読み取る 次を試してください:

出典DF:

In [85]: df 
Out[85]: 
     time 
0 0.391285 
1 0.391285 
2 0.391285 

ソリューション:

In [94]: df['time2'] = pd.to_timedelta((df['time'] * 86400).round(), unit='s') 

In [95]: df 
Out[95]: 
     time time2 
0 0.391285 09:23:27 
1 0.391285 09:23:27 
2 0.391285 09:23:27 

In [96]: df.dtypes 
Out[96]: 
time    float64 
time2 timedelta64[ns] 
dtype: object 
+0

こんにちは最大、 9時23分27秒ではなく、10進数として読み取るときに読むのが問題です。 –

+0

@pythonninja、 'dtype = {'column_name':str}を使いましたか? '? – MaxU

+0

はい、私はそれをもっと長い文字列として読んでいます0.3912847222222222 –