在数据帧中循环时比较时间(小时和分钟)
Compare time (hours and minutes) when looping in dataframe
我有以下示例数据:
custom_date_parser = lambda x:datetime.strptime(x, "%m/%d/%Y %H:%M")
df = pd.read_csv('sample.csv', index_col = 0, parse_dates = ['date'], date_parser = custom_date_parser)
| date | value |
| ------------------- | --------|
| 2021-12-06 08:30:00 | 100 |
| 2021-12-06 08:35:00 | 150 |
| 2021-12-06 08:40:00 | 120 |
| 2021-12-06 08:45:00 | 90 |
| 2021-12-06 08:50:00 | 80 |
...................................
| 2021-12-09 08:30:00 | 220 |
| 2021-12-09 08:35:00 | 250 |
| 2021-12-09 08:40:00 | 260 |
| 2021-12-09 08:45:00 | 290 |
| 2021-12-09 08:50:00 | 300 |
如果小时和分钟“08:40:00”在索引列中,我想遍历数据框并在 'value' 列中打印数字。我试过一些有趣的东西,比如:
for i in df.index:
if '08:40:00' in [i]:
print(df.value[i])
由于您已将其解析为日期时间对象,因此您可以检查小时和分钟,将数据帧过滤为匹配的行并打印相应的值。
for x in df.loc[(df['date'].dt.hour.eq(8)) & (df['date'].dt.minute.eq(40))]['value']:
print(x)
从您的数据集中,由于 date
列采用日期时间格式,我们可以像这样简单地过滤所需的时间:
>>> df[df['date'].dt.strftime("%H:%M:%S") == '08:40:00']
date value
2 2021-12-06 08:40:00 120
7 2021-12-09 08:40:00 260
我会将您的日期字段设置为 DateTimeIndex。
然后您可以使用类似这样的方法来过滤分钟和小时。
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
df[df.index.minute == 40] & df[df.index.hour == 8]
我有以下示例数据:
custom_date_parser = lambda x:datetime.strptime(x, "%m/%d/%Y %H:%M")
df = pd.read_csv('sample.csv', index_col = 0, parse_dates = ['date'], date_parser = custom_date_parser)
| date | value |
| ------------------- | --------|
| 2021-12-06 08:30:00 | 100 |
| 2021-12-06 08:35:00 | 150 |
| 2021-12-06 08:40:00 | 120 |
| 2021-12-06 08:45:00 | 90 |
| 2021-12-06 08:50:00 | 80 |
...................................
| 2021-12-09 08:30:00 | 220 |
| 2021-12-09 08:35:00 | 250 |
| 2021-12-09 08:40:00 | 260 |
| 2021-12-09 08:45:00 | 290 |
| 2021-12-09 08:50:00 | 300 |
如果小时和分钟“08:40:00”在索引列中,我想遍历数据框并在 'value' 列中打印数字。我试过一些有趣的东西,比如:
for i in df.index:
if '08:40:00' in [i]:
print(df.value[i])
由于您已将其解析为日期时间对象,因此您可以检查小时和分钟,将数据帧过滤为匹配的行并打印相应的值。
for x in df.loc[(df['date'].dt.hour.eq(8)) & (df['date'].dt.minute.eq(40))]['value']:
print(x)
从您的数据集中,由于 date
列采用日期时间格式,我们可以像这样简单地过滤所需的时间:
>>> df[df['date'].dt.strftime("%H:%M:%S") == '08:40:00']
date value
2 2021-12-06 08:40:00 120
7 2021-12-09 08:40:00 260
我会将您的日期字段设置为 DateTimeIndex。
然后您可以使用类似这样的方法来过滤分钟和小时。
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
df[df.index.minute == 40] & df[df.index.hour == 8]