当前位置: 首页 > article >正文

pandas定位选取某列某指标最大值所在的行记录,比如月底

比如对于一个股价时间序列表:

年月     年月日股价
贵州茅台202301202301011500
贵州茅台202301202301201600
贵州茅台202301202301311400
贵州茅台202302202302051300
贵州茅台202302202302281700
五粮液202301202301021000
五粮液202301202301312000

怎样筛选出每个股票在月底那天的股价?

两种方法:

1) 先制定好一个每年每月最后一个交易日的表,然后查表

2)数据分析方法,先按股票和年月分组,然后再定位选取每个月里面日期最大的那一行。

下面是第二种方法的代码:

import pandas as pd  
  
# 假设你的数据框为df,ym是年月,ymd是年月日,code是股票代码,sc是股价  
df = pd.DataFrame({'ym': ['202301', '202301','202301','202302','202302', '202301', '202301'],
                   'code':['贵州茅台','贵州茅台','贵州茅台','贵州茅台','贵州茅台','五粮液','五粮液'],
                   'ymd': ['20230101', '20230120', '20230131', '20230205','20230228','20230102','20230131'],
                  "sc":[1500,1600,1400,1300,1700,1000,2000]})  
df['ymd'] = pd.to_datetime(df['ymd'])

print(df) 

# 假设您的数据框名为df,包含年月(ym)、年月日(ymd)和得分(sc)列
# 首先按年月分组
grouped = df.groupby(['code','ym'])

# 在每个组里面选取年月日最大的那一行记录
#两种方法:
# 1)
#result = grouped.apply(lambda x: x[x['ymd'] == x['ymd'].max()])
#2)
max_date_rows = grouped['ymd'].idxmax()
result = df.loc[max_date_rows]


# 重置索引
result.reset_index(drop=True, inplace=True)

print(result)

 运行结果:

       年月    代码        年月日          股价
0  202301  贵州茅台 2023-01-01  1500
1  202301  贵州茅台 2023-01-20  1600
2  202301  贵州茅台 2023-01-31  1400
3  202302  贵州茅台 2023-02-05  1300
4  202302  贵州茅台 2023-02-28  1700
5  202301  五粮液    2023-01-02   1000
6  202301  五粮液    2023-01-31   2000
       年月    代码        年月日          股价
0  202301  五粮液     2023-01-31  2000
1  202301  贵州茅台 2023-01-31  1400
2  202302  贵州茅台 2023-02-28  1700


http://www.kler.cn/a/133083.html

相关文章:

  • GPIO相关的寄存器(重要)
  • Vulhub漏洞复现---solr---CVE-2019-17558
  • 【WebRTC】视频发送链路中类的简单分析(下)
  • 查询DBA_FREE_SPACE缓慢问题
  • 2024强化学习的结构化剪枝模型RL-Pruner原理及实践
  • .netcore + postgis 保存地图围栏数据
  • Java20新增特性
  • AIGC 是通向 AGI 的那条路吗?
  • 复杂数据统计与R语言程序设计实验二
  • 计算机网络学习笔记(六):应用层(待更新)
  • Linux发展历程
  • 基于STM32的外部中断(EXTI)在嵌入式系统中的应用
  • 2023.11.18 -自用hadoop高可用环境搭建命令
  • 【SQL】简单博客开发代码
  • 客户端性能优化实践
  • 特征缩放和转换以及自定义Transformers(Machine Learning 研习之九)
  • 飞书开发学习笔记(八)-开发飞书小程序Demo
  • 牛客 —— 链表中倒数第k个结点(C语言,快慢指针,配图)
  • Linux网络——HTTP
  • Swift 如何打造兼容新老系统的字符串分割(split)方法
  • <C++>类和对象下|初始化列表|explicit static|友元|内部类|匿名对象|构造函数的优化
  • vue-组件通信(二)
  • DHCP协议详解
  • 竞赛选题 疫情数据分析与3D可视化 - python 大数据
  • 机器学习笔记 - Ocr识别中的文本检测EAST网络概述
  • 机器视觉工程师吐槽的常见100个名场面