シフト表を作っているのですが確認のため24時間中に漏れや重複がないか
startの日付でtimeを合計し24より減(漏れ)・増(重複)がないかをグラフにして確認しています。
他に確認するいい方法があれば教えて欲しいのですが
質問1
datetimeからdateに変換する方法教えてください。
datetimeindexにするとdateにできるのですがdatetimeindexにしなくても変換する方法があれば教えてください。
python
import io import pandas as pd import numpy as np data = """ name start end a 2018/06/01 9:00:00 2018/06/01 18:00:00 b 2018/06/01 18:00:00 2018/06/02 9:00:00 c 2018/06/02 9:00:00 2018/06/02 18:00:00 d 2018/06/02 18:00:00 2018/06/02 21:00:00 e 2018/06/02 21:00:00 2018/06/03 9:00:00 a 2018/06/03 9:00:00 2018/06/04 9:00:00 b 2018/06/04 9:00:00 2018/06/04 18:00:00 c 2018/06/04 18:00:00 2018/06/05 9:00:00 """ pd.read_table(io.StringIO(data), sep="\s{4}", parse_dates=['start', 'end'], engine='python') df['time'] = df['end'] - df['start'] # indexに設定後、dateを取得 df2 = df.set_index('start') df2['date']=df2.index.date table = pd.pivot_table(df2, values='time', index=['date'], aggfunc=np.sum) table.plot.barh()
nameで色分けできたらと思い
python
table = pd.pivot_table(df2, values='time', index=['date'], columns=['name'], aggfunc=np.sum) table.plot.barh(stacked=True)
にしたのですが
TypeError: Cannot cast ufunc greater input from dtype('<m8[ns]') to dtype('<m8') with casting rule 'same_kind'
というエラーがでます。
質問2
stacked=Trueにしなければエラーはでないのですが積み上げにはできないのでしょうか
よろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう