将日度数据处理成只取成每周五的数据(周度数据)


一、处理逻辑

1.新建一个dataframe,包含两列,一列原数据的date,一列与date相对应的星期
2.因为数值类型的原因需要用pd.concat这个函数将两个dataframe合起来
3.用新增的星期这个字段来进行筛选
4.根据需要再看需不需要把这个重新填到另一个dataframe里边保持index完成

二、实际代码

代码如下(示例):

import pandas as pd
from datetime import datetime as dt
import matplotlib.pyplot as plt
import pickle

pd.set_option('display.max_rows', 8)
plt.rcParams['figure.figsize'] = (16.0, 9.0)

# rf文件
rf = open('F:/xx/data/rf.pkl', 'rb')
rf = pickle.load(rf)
# index文件
index = open('F:/xx/data/index.pkl', 'rb')
index = pickle.load(index)
#可提函数
rf['tradeDate'] = pd.to_datetime(rf['tradeDate'])
index['tradeDate'] = pd.to_datetime(index['tradeDate'])

def stringToDatetime(project,d_date):
  project[d_date] = pd.to_datetime(project[d_date])
  return project


#可根据需要增加新的变量进行控制
def week_avg(project, ID, project_id):
    d_week = []
    i = 0
    numOfRow = len(project)

    for i in range(numOfRow):
        # d = dt.strptime(rf['tradeDate'][i], '%Y-%m-%d')
        date = dt.date(project['tradeDate'][i])
        d_week.append(date.weekday())

    # 新建一个表
    rf_new = pd.DataFrame(columns=['rf_date', 'rf_week'])
    rf_new['rf_week'] = d_week
    rf_new['rf_date'] = project['tradeDate']

    # 合并两个表
    join = pd.concat([project, rf_new], axis=1)
    #判断是否需要需要判断ID字段
    if project_id == '0':
        join = join[(join['rf_week'] == 4)]
    else:
        join = join[(join[ID] == project_id) & (join['rf_week'] == 4)]
    return join


# join=week_avg(rf)[(week_avg(rf)['secID']== 'Shibor1W.IRCN') & (week_avg(rf)['rf_week'] == 4)]
# join1=week_avg(index)[(week_avg(index)['indexID']== '000300.ZICN') & (week_avg(index)['rf_week'] == 4)]
rf_week = week_avg(rf, 'secID', '0')
hs_week = week_avg(index, 'indexID', '0')
print(rf_week)
print(hs_week)

总结

可以按月和年进行筛选,但是有更简单的方法可以直接处理用pd.apply函数

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值