回答編集履歴
1
コード変更
test
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
その時間が含まれるかどうかを bool で持っておいて、id毎に or をとる形にすれば、重複カウントされなくなります。最後に合計をとればほしいデータが得られるかと思います。
|
2
2
|
|
3
|
-
boolデータを作るには、`explode` を使うよりも最初に
|
3
|
+
boolデータを作るには、`explode` を使うよりも、最初に最小値と最大値からSeriesを作ってしまったほうが簡単にできると思います。
|
4
4
|
```python
|
5
|
-
ts = pd.date_range(df['start'].min().floor('h'), df['end'].max(), freq='h')
|
5
|
+
ts = pd.date_range(df['start'].min().floor('h'), df['end'].max(), freq='h').to_series()
|
6
6
|
result = df.apply(
|
7
|
-
lambda x:
|
7
|
+
lambda x: (x['start'].floor('h') <= ts) & (ts <= x['end']), axis=1
|
8
|
-
axis=1
|
9
8
|
).groupby(df['id']).any().sum()
|
10
9
|
print(result)
|
11
10
|
```
|