以下のように時間インデックスが付けられたデータフレームがあります。
date
2020-06-17 23:00:00 558
2020-06-17 23:01:00 184
2020-06-17 23:02:00 113
2020-06-17 23:03:00 85
2020-06-17 23:04:00 47
...
2020-07-01 18:48:00 203
2020-07-01 18:49:00 118
2020-07-01 18:50:00 236
2020-07-01 18:51:00 216
2020-07-01 18:52:00 198
Name: quarklgt, Length: 13478, dtype: int64
私は次のようなリストを持っています:
tss=["12:00:04","1:00:06","2:00:10","5:00:14","9:00:24"]
tssリストのみのデータフレームをサブセット化/フィルタリングするにはどうすればよいですか?私は試しましたdf.index.between_time(tss[0],len(tss)-1)
が、それはその間のすべてのデータを提供します。大変感謝いたします。
ありがとう
これが私のアプローチです。最初に、datetimeオブジェクトをdate形式とhh:mm:ss形式に分割する必要があります。その後、をhh:mm:ss
文字列に変換.isin(tss)
し、フィルタリングのマスクとして使用します。概して:
df = df.reset_index()
df = df[df['date'].map(lambda x: str(x).split()[1]).isin(tss)]
次に例を示します。2行目、4行目、6行目を保持することになっています。
df = pd.DataFrame({'date':['2020-06-17 23:00:00',
'2020-06-17 12:00:04',
'2020-06-17 23:02:00',
'2020-06-17 1:00:06',
'2020-06-17 23:03:00',
'2020-06-17 2:00:10',
'2020-07-01 18:48:00',
'2020-07-01 18:49:00',
'2020-07-01 18:50:00',
'2020-07-01 18:51:00',
'2020-07-01 18:52:00']}).set_index('date')
コードを使用した後:
df = df.reset_index()
df = df[df['date'].map(lambda x: str(x).split()[1]).isin(tss)]
出力は次のとおりです。
date
1 2020-06-17 12:00:04
3 2020-06-17 1:00:06
5 2020-06-17 2:00:10
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加