回答編集履歴

2

2024/09/28 05:45

投稿

melian
melian

スコア20590

test CHANGED
@@ -1,12 +1,16 @@
1
- `pandas.Index.asof()`使うとよ思います
1
+ > 別のケースで'2024-09-22'した場合で'2024-09-22'自体が存在しな場合はその直前("2024-09-20")でなく直後("2024-09-23")に存在するデータを取得するこなどはできますでしょうか?
2
+
2
3
  ```python
3
- df = df.loc[[df.index.asof('2024-09-22')]]
4
- # インデックスがソートされていない場合は予めソートしておく必要があります
4
+ import pandas as pd
5
+ import numpy as np
6
+
7
+
5
- # df = df.loc[[df.sort_index().index.asof('2024-09-22')]]
8
+ idx = np.argmin(np.abs(pd.to_datetime(df.index) - pd.to_datetime('2024-09-22')))
9
+ df = df.iloc[[idx]]
6
10
  print(df)
7
11
 
8
12
  # A B C
9
13
  # Date
10
- # 2024-09-20 4 10 20
14
+ # 2024-09-23 1 11 21
11
15
  ```
12
16
 

1

2024/09/27 13:14

投稿

melian
melian

スコア20590

test CHANGED
@@ -1,6 +1,8 @@
1
1
  `pandas.Index.asof()` を使うとよいかと思います。
2
2
  ```python
3
3
  df = df.loc[[df.index.asof('2024-09-22')]]
4
+ # インデックスがソートされていない場合は予めソートしておく必要があります
5
+ # df = df.loc[[df.sort_index().index.asof('2024-09-22')]]
4
6
  print(df)
5
7
 
6
8
  # A B C