python怎么按照日期筛选数据

53次阅读
没有评论

共计 2265 个字符,预计需要花费 6 分钟才能阅读完成。

在 Python 中,你可以使用 datetime 模块来处理日期和时间。以下是按照日期筛选数据的几种常见方法:

方法一:使用比较运算符(>= 和 <=)筛选日期范围内的数据。

from datetime import datetime

data = [{'date': '2021-01-01', 'value': 10},
    {'date': '2021-02-01', 'value': 20},
    {'date': '2021-03-01', 'value': 30},
    {'date': '2021-04-01', 'value': 40},
    {'date': '2021-05-01', 'value': 50},
]

start_date = datetime.strptime('2021-02-01', '%Y-%m-%d')
end_date = datetime.strptime('2021-04-30', '%Y-%m-%d')

filtered_data = [d for d in data if start_date <= datetime.strptime(d['date'], '%Y-%m-%d') <= end_date]
print(filtered_data)

输出结果:

[{'date': '2021-02-01', 'value': 20},
    {'date': '2021-03-01', 'value': 30},
    {'date': '2021-04-01', 'value': 40}
]

方法二:使用列表推导式和日期比较操作筛选日期范围内的数据。

from datetime import datetime

data = [{'date': '2021-01-01', 'value': 10},
    {'date': '2021-02-01', 'value': 20},
    {'date': '2021-03-01', 'value': 30},
    {'date': '2021-04-01', 'value': 40},
    {'date': '2021-05-01', 'value': 50},
]

start_date = datetime.strptime('2021-02-01', '%Y-%m-%d')
end_date = datetime.strptime('2021-04-30', '%Y-%m-%d')

filtered_data = [d for d in data if start_date <= datetime.strptime(d['date'], '%Y-%m-%d') <= end_date]
print(filtered_data)

输出结果同上。

方法三:使用 pandas 库进行日期筛选。

import pandas as pd

data = pd.DataFrame([{'date': '2021-01-01', 'value': 10},
    {'date': '2021-02-01', 'value': 20},
    {'date': '2021-03-01', 'value': 30},
    {'date': '2021-04-01', 'value': 40},
    {'date': '2021-05-01', 'value': 50},
])

data['date'] = pd.to_datetime(data['date'])

start_date = pd.to_datetime('2021-02-01')
end_date = pd.to_datetime('2021-04-30')

filtered_data = data[(data['date'] >= start_date) & (data['date'] <= end_date)]
print(filtered_data)

输出结果:

        date  value
1 2021-02-01     20
2 2021-03-01     30
3 2021-04-01     40

这里使用了 pandas 库,将数据转换为 DataFrame,并使用 to_datetime 函数将日期字符串转换为日期对象。然后,可以使用比较运算符和逻辑运算符筛选出日期范围内的数据。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-13发表,共计2265字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)