-*- coding: utf-8 -*- #读取交易日历数据表“date.xlsx”,字段依次为: # 市场类型(Markettype)、日期(Clddt)、星期(Daywk)、开市状态(State) # 其中开市状态O,表示开市 # 返回2016-01-04 至 2017-12-29日的每周最小交易日和最大交易日 # 分别记为:list1和list2
时间: 2024-02-23 16:59:51 浏览: 145
解锁Objective-C的KVC:深入Key-Value Coding的奥妙
好的,你可以使用pandas和datetime库来实现。以下是代码示例:
```python
import pandas as pd
from datetime import datetime, timedelta
# 读取数据
data = pd.read_excel('date.xlsx')
# 筛选出2016-01-04 至 2017-12-29的数据
start_date = datetime(2016, 1, 4)
end_date = datetime(2017, 12, 29)
data = data[(data['Clddt'] >= start_date) & (data['Clddt'] <= end_date)]
# 将日期转换为星期
data['Daywk'] = data['Clddt'].apply(lambda x: x.weekday())
# 找出每周的最小和最大交易日
list1 = [] # 最小交易日列表
list2 = [] # 最大交易日列表
begin_date = start_date
while begin_date <= end_date:
end_date_week = begin_date + timedelta(days=6-begin_date.weekday())
week_data = data[(data['Clddt'] >= begin_date) & (data['Clddt'] <= end_date_week)]
if 'O' in week_data['State'].values:
# 如果这周有开市则记录最小和最大交易日
min_date = week_data[week_data['State'] == 'O']['Clddt'].min()
max_date = week_data[week_data['State'] == 'O']['Clddt'].max()
list1.append(min_date)
list2.append(max_date)
# 跳到下一周
begin_date = end_date_week + timedelta(days=1)
print("每周最小交易日:", list1)
print("每周最大交易日:", list2)
```
这段代码会输出每周的最小交易日和最大交易日。
阅读全文