56058


python 初級者です。  
`pandas._libs.tslibs.timestamps.Timestamp`と`datetime.time`の引き算をすると以下のエラーが出てしまい、引き算が出来ません。

[code]

    unsupported operand type(s) for -: 'Timestamp' and 'datetime.time'
    
[/code]

12:55:00 と12:56:52の引き算をして00:01:52を得るだけなのですが、恥ずかしながら苦戦しております。  
工場の作業時間の分析プログラムです。  
"休憩時刻end"は日付なしの定数的な時刻データ。  
"作業中"は日付の付いた実績データといった感じです。

ご指導よろしくお願いいたします。

* * *

**実際のコード**

[code]

    import datetime
    import time
    import pandas as pd
    
    休憩時刻end = datetime.time(12,55,0)
    
    作業中 = pd.Timestamp('2019-06-24 12:56:52')
    
    td = 作業中.time()-休憩時刻end
    
[/code]


CC BY-SA 4.0
2019-06-23T13:13:49.153
56038
2019-06-24T08:14:21.663
2019-06-24T01:03:51.567
3060
34450
question
python pandas
<class 'pandas._libs.tslibs.timestamps.Timestamp'><class 'datetime.time'> の引き算をしたい


勤務/作業/稼働など時間データの加減算は、特定の同じ型のデータの間でしか計算できません。  
質問のプログラムではPython組み込みの`datetime.time`とpandasライブラリの`Timestamp`の間で計算しようとしてエラーになっています。  
しかもPython組み込みの`datetime.time`は時間データの加減算が出来る型ではありません。

だいたい以下のような型で時間データの加減算が可能です。

  * Python組み込みの`datetime.datetime`, `datetime.timedelta` 等
  * pandasの`Timestamp`, `Timedelta`, `Timespan` 等

演算結果の型はPython組み込みなら`datetime.timedelta`、pandasなら`Timedelta`になります。

pandasだけでやるなら、以下のようになるでしょう。

[code]

    import pandas as pd
    
    作業中 = pd.Timestamp('2019-06-24 12:56:52')
    休憩時刻end = 作業中.combine(作業中.date(), pd.Timestamp('12:55:00').time())
    td = 作業中 - 休憩時刻end
    print(td)
    
[/code]

Python組み込みに合わせるなら、以下のようになるでしょう。

[code]

    import datetime
    import pandas as pd
    
    作業中 = pd.Timestamp('2019-06-24 12:56:52').to_pydatetime()
    休憩時刻end = 作業中.combine(作業中.date(), datetime.time(12,55,0))
    td = 作業中 - 休憩時刻end
    print(td)
    
[/code]


CC BY-SA 4.0
2019-06-24T08:14:21.663
56058
2019-06-24T08:14:21.663
26370
56038
answer