1import pandas as pd
23df = pd.DataFrame([[12,'13:00','14:00',3],4[12,'13:15','13:30',4],5[12,'13:30','13:45',3],6[12,'13:35','15:00',4],7[12,'14:55','15:00',4]],8 columns=['日付','入店時間','退店時間','席番号'])910df['入店時間']= pd.to_datetime(df['入店時間'])11df['退店時間']= pd.to_datetime(df['退店時間'])1213# 日付ごとに処理14for day, day_df in df.groupby('日付'):15 lst =[]16for idx, row in day_df.iterrows():17 lst.append(pd.Series(row['席番号'], index = pd.date_range(row['入店時間'], row['退店時間'], freq='1min')))18# 日付を表示19print("{}日".format(idx))20# タイムテーブルを生成21 time_table = pd.concat(lst, axis=1)22 time_table.index = time_table.index.strftime('%H:%M')23# 重複がある時間のみ抽出24 time_table = time_table[(time_table.apply(pd.value_counts, axis=1)>1.0).any(axis=1)]25# 重複があるデータ以外は削除26 time_table = time_table.apply(lambda d: d[d.duplicated(keep=False)& d.notna()], axis=1)27print(time_table)2829#4日30# 0 2 3 431#13:30 3.0 3.0 NaN NaN32#13:31 3.0 3.0 NaN NaN33#13:32 3.0 3.0 NaN NaN34#13:33 3.0 3.0 NaN NaN35#13:34 3.0 3.0 NaN NaN36#13:35 3.0 3.0 NaN NaN37#13:36 3.0 3.0 NaN NaN38#13:37 3.0 3.0 NaN NaN39#13:38 3.0 3.0 NaN NaN40#13:39 3.0 3.0 NaN NaN41#13:40 3.0 3.0 NaN NaN42#13:41 3.0 3.0 NaN NaN43#13:42 3.0 3.0 NaN NaN44#13:43 3.0 3.0 NaN NaN45#13:44 3.0 3.0 NaN NaN46#13:45 3.0 3.0 NaN NaN47#14:55 NaN NaN 4.0 4.048#14:56 NaN NaN 4.0 4.049#14:57 NaN NaN 4.0 4.050#14:58 NaN NaN 4.0 4.051#14:59 NaN NaN 4.0 4.052#15:00 NaN NaN 4.0 4.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。