import datetime
import numpy as np
import pandas as pd
# 读取数据
data = pd.read_csv("tfns12type1.csv")
# 把date转为时间数据类型
data['rdate'] = pd.to_datetime(data['rdate'])
data['fdate'] = pd.to_datetime(data['fdate'])
# 按基金编号和rdate排序
data = data.sort_values(["fundno", "rdate"])
# 重置索引
data = data.reset_index()
# 新增一列ndate
data["ndate"] = 0
# 循环遍历所有行
for i in range(len(data.index) - 1):
# 如果下一行的fundno等于本行的fundno的话
if data["fundno"][i + 1] == data["fundno"][i]:
# 本行的ndate等于下一行的rdate
data["ndate"][i] = data["rdate"][i + 1]
# 否则
else:
# 本行的ndate等于本行的rdate加180天
data["ndate"][i] = data["rdate"][i] + datetime.timedelta(days=180)
# 最后一行的ndate按最后一行的rdate加180天处理
data["ndate"][len(data.index) - 1] = data["rdate"][len(data.index) - 1] + datetime.timedelta(days=180)
# 输出计算结果的前20行
print(data.iloc[:20, :])
# 第二问,按rdate排序
data = data.sort_values("rdate")
# 把月份从rdate里提取出来
data["rdate_month"] = data["rdate"].apply(lambda x: "-".join(str(x).split())[:7])
# 按照rdate的月份分组,每组取最大值,找到rdate和fundno
max_df = data.groupby("rdate_month").max().loc[:, ["rdate", "fundno"]]
# 按照rdate的月份分组,每组取最小值,找到fdate
min_df = data.groupby("rdate_month").min().loc[:, "fdate"]
# 把上面两个表连接起来
res_df = pd.concat([max_df, min_df], axis=1)
# 按fundno排序,输出前20行
print(res_df.sort_values("fundno")[:20])
# 按rdate排序,输出前20行
print(res_df.sort_values("rdate")[:20])
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
49.rar (3个子文件)
tfns12type1.csv 7.05MB
code.ipynb 39KB
code1.py 2KB
共 3 条
- 1
资源评论
HinomotoOniko
- 粉丝: 1831
- 资源: 139
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于UC3842+LTS26Q1565A设计PC机充电器 硬件(原理图+PCB)工程文件.zip
- Hive SQL经典面试题,大数据SQL经典面试题
- Qt实现喷码器代码,实现二维码、条形码、图形的旋转、移动等
- 基于LM324芯片比较器传感器模块AD09设计硬件(原理图+PCB)工程文件.zip
- HTTP请求 - 记一笔-添加记账.jmx
- 2205040245凡永超硬间隔svm.ipynb
- Qt喷码器demo,演示软件,不是代码
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功