2017-08-25 14 views
3

どこでも(including the docs)はSeries.dt.total_seconds()を使用する必要がありますが、機能を見つけることができないと言われています。私は、これはすべての長い時間、およびその他のSeries.dt機能の作業に障害なしで働いているvirtualenvの範囲内であるパンダシリーズ..dt.total_seconds()が見つかりません

pip freeze | grep pandas 
pandas==0.20.3 

python --version 
Python 3.5.3 

...私は何かの間違ったバージョンを持っているが、私がいないと仮定しています。コードは次のとおりです。

from pandas import Series 
from datetime import datetime 

s = Series([datetime.now() for _ in range(10)]) 

0 2017-08-25 15:55:25.079495 
1 2017-08-25 15:55:25.079504 
2 2017-08-25 15:55:25.079506 
3 2017-08-25 15:55:25.079508 
4 2017-08-25 15:55:25.079509 
5 2017-08-25 15:55:25.079510 
6 2017-08-25 15:55:25.079512 
7 2017-08-25 15:55:25.079513 
8 2017-08-25 15:55:25.079514 
9 2017-08-25 15:55:25.079516 
dtype: datetime64[ns] 

s.dt 
<pandas.core.indexes.accessors.DatetimeProperties object at 0x7f5a686507b8> 

s.dt.minute 
0 55 
1 55 
2 55 
3 55 
4 55 
5 55 
6 55 
7 55 
8 55 
9 55 
dtype: int64 

s.dt.total_seconds() 
AttributeError: 'DatetimeProperties' object has no attribute 'total_seconds' 

私は2番目のマシンでもこれをテストして同じ結果を得ました。私は何が欠けているすべてのアイデア?

答えて

6

total_secondsはないdatetime

そこでエラー

あなたは多分これはあなたがする必要があるのでtotal_seconds

と異なる第二の成分を返すdt.second

を望むことがtimedeltaのメンバーであります一連のタイムディールを生成するために、これに対して何かを削除するなどの何らかの算術演算を実行するTASは、その後、あなたがdt.total_seconds

例行うことができます。また

In[278]: 
s = s - pd.datetime.now() 
s 

Out[278]: 
0 -1 days +23:59:46.389639 
1 -1 days +23:59:46.389639 
2 -1 days +23:59:46.389639 
3 -1 days +23:59:46.389639 
4 -1 days +23:59:46.389639 
5 -1 days +23:59:46.389639 
6 -1 days +23:59:46.389639 
7 -1 days +23:59:46.389639 
8 -1 days +23:59:46.389639 
9 -1 days +23:59:46.389639 
dtype: timedelta64[ns] 

In[279]: 
s.dt.total_seconds() 

Out[279]: 
0 -13.610361 
1 -13.610361 
2 -13.610361 
3 -13.610361 
4 -13.610361 
5 -13.610361 
6 -13.610361 
7 -13.610361 
8 -13.610361 
9 -13.610361 
dtype: float64 
2

をあなたは本当に(1970エポック)秒を持っているしたい場合は、あなたが見ることができます。この

import pandas as pd 
from datetime import datetime 
import time 

df = pd.DataFrame({'datetime' : [datetime(2012, 11, 19, 12, 40, 10), 
           datetime(2012, 11, 19, 12, 35, 10), 
           datetime(2012, 11, 19, 12, 30, 10), 
           datetime(2012, 11, 19, 12, 25, 10) 
           ]}) 
df['seconds'] = [time.mktime(t.timetuple()) for t in df.datetime] 
df['back_to_date_time'] = [datetime.utcfromtimestamp(t) for t in df.seconds] 

>>>>df 
Out[2]: 
      datetime  seconds back_to_date_time 
0 2012-11-19 12:40:10 1.353325e+09 2012-11-19 11:40:10 
1 2012-11-19 12:35:10 1.353325e+09 2012-11-19 11:35:10 
2 2012-11-19 12:30:10 1.353325e+09 2012-11-19 11:30:10 
3 2012-11-19 12:25:10 1.353324e+09 2012-11-19 11:25:10 

かを試すことができますここをクリック How can I convert a datetime object to milliseconds since epoch (unix time) in Python?

+0

これは私が欲しかったものです。私はすぐに修正を行い、1970年1月1日を差し引き、結果として得られる 'timedelta'に対して' total_seconds() 'を使用しました。 (私は本当にdatetime64形式が嫌いです)。しかし、ありがとう! – RockJake28

+0

お寄せいただきありがとうございます。以前は同じ問題があった。 – mortysporty

関連する問題