python&多路归并

2023-05-16

问题:
在项目中,需从待分析的数据中选出最大的前几名,但由于数据量太大,直接排序会内存报错,因此尝试用多路归并的思路来解决问题。

①接口:一个目录下有x个已排序好的csv
最后是为了输出前n名

for i in os.listdir(name):
    csv_name = os.path.join(name,i)
    temp_files.append(csv_name)
temp_dict = {}
month_result = {}
count = 0
for i in month_file:
    temp = pd.read_csv(i,header=None)
    temp_dict[count] = temp.head(n)
    count += 1
panel = pd.Panel.from_dict(temp_dict,orient = 'minor')
k = len(temp_dict)
rank_list = []
rank_deep = []
for i in range(k):
    rank_list.append(int(panel[1][:1][i]))
while n:
    a = rank_list.index(max(rank_list))
    e = panel[0][a][collections.Counter(rank_deep)[a]]
    f = [panel[1][a][collections.Counter(rank_deep)[a]]]
    temp_result[e] = f
    rank_deep.append(a)
    try:
        b = int(panel[1][a][collections.Counter(rank_deep)[a]])
    except:
        b = 0
    del rank_list[a]
    rank_list.insert(a,b)
    n -= 1

思路:
最后需要前n名,所以每个csv之需取前n名,循环n次
①n个排好的csv取前n名:

不知道有多少个,所以遍历比较方便。在学pandas所以放在 三维的结构中 panel:
panel = pd.Panel.from_dict(temp_dict,orient = 'minor' )

②在panel中取每个csv的最大值,放在列表rank_list中:

k = len(temp_dict)
for i in range(k):
    rank_list.append(int(panel[1][:1][i]))

③找出rank_list中最大值,找到它是第几个csv中的

a = rank_list.index(max(rank_list))

④需要指针的时候到了,python没有,要找个可以代替指针功能的,由于x随着输入文件的变化而变化,所以指针的个数不能写死;我的想法是设一个列表rank_deep,第③步中找到最大值是第i个csv中的,就append(i),用rank_deep中i的个数来作为第i个csv的指针。然后将第③步找的最大的值及其索引写入字典temp_result中。

e = panel[0][a][collections.Counter(rank_deep)[a]]
f = [panel[1][a][collections.Counter(rank_deep)[a]]]
temp_result[e] = f
rank_deep.append(a)

⑤去旧迎新

try:
    b = int(panel[1][a][collections.Counter(rank_deep)[a]])
except:
    b = 0
del rank_list[a]
rank_list(a,b)

小结:
现在刚实习,遇到问题就是走一步算一步,用的笨办法,之后要看看有没有聪明的办法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python&多路归并 的相关文章

  • 【BMS】锂电池充放电倍率C

    1 1C表示电池一小时完全充放电时电流强度 那这个电流强度是多少呢 xff1f 不同电芯肯定不一样 xff0c 要参考它的电池容量 xff08 Ah或者mAh xff09 下面是一节18650电池的容量参数 xff1a 它的标称容量是255
  • 【BMS】电池包低温加热技术

    1 目的 xff1a 提高锂电池低温充放电性能 xff08 如电动车在寒冷天气续航变短 启动困难 充电难以充满等一些列问题 xff09 2 分类 2 1 外部加热 2 1 1 电热元件加热 电热原件加热为最常见的低温加热方式 xff0c 主
  • 【BMS】电池能量管理:充电管理

    x1f50b 电池包能量管理 xff1a 充电管理 x1f50b 一 通信 充电是一个过程 xff0c 需要电池包和充电器间进行频繁的通信 xff0c 以保证电池安全和寿命 由于通信速率要求不高 xff0c 以及精简接口的考虑 xff0c
  • 【QT】QByteArray的使用

    1 QByteArray可以用来存储原始二进制字节和8 bits字符 xff0c 一般在需要传输原始数据和内存资源短缺时使用 xff08 嵌入式linux Qt xff09 2 QByteArray存储的是char型字符 xff0c 继承自
  • 【工具】搭建TCP公网服务器(用于日常调试)

    1 Openluat TCP Lab xff1a xff08 1 xff09 在MCU上调试GPRS等模块时 xff0c 为了验证和平台TCP通信是否顺畅 xff0c 很多时候需要一个公网的IP环境作为服务器 xff0c 能够直接和GPRS
  • 9.patroni中文手册—Using Patroni with Kubernetes

    9 Using Patroni with Kubernetes Patroni可以使用Kubernetes对象来存储集群的状态并管理领导者密钥 这样一来 它就可以在Kubernetes环境中操作PostgreSQL 而无需任何一致性存储 也
  • PX4飞控学习(一)

    一 linux下环境搭建 用户需要 dialout 组 来访问usb cat gt span class hljs variable HOME span rule tmp lt lt EOF span class hljs comment
  • 阿里云-轻量应用服务器-Ubuntu-图形界面-xfce-VNC远程连接

    1 在阿里云上申请一个 轻量应用服务器 阿里云 xff1a https www aliyun com 配置选好 系统选Ubuntu xff0c 下单付款 然后就去管理控制台 我当初是选了CentOS 但想着想着又把系统换回Ubuntu了 x
  • 进程管理常见系统调用

    进程管理常见系统调用 1 前言2 如何提供有许多CPU的假象 xff1f 2 1 操作系统是管理多个进程执行的软件 3 操作系统提供哪些系统调用API 3 1创建 xff08 fork xff09 3 2 直面fork3 3 execve系
  • JAVA内存模型和Volatile底层实现

    今天学习了java内存模型和volatile关键字的底层实现 xff0c 所以在这里总结一下 xff0c 以后可以时常的来进行学习 这块内容相当于学习java并发编程的基础和入门 学习并发编程首先要掌握的是java的内存模型 1 CPU的多
  • 程序员的第一课:写程序的本质

    现在进入软件行业的人越来越多 xff0c 程序员的水平参差不齐 xff0c 有很了不起的 xff0c 想要改变这个世界的 也有划水的 xff0c 混日子的 那么程序员应该怎样树立自己的程序员观呢 如果从大学开始算起的话 xff0c 我写程序
  • Docker与ROS分布式通信

    主机 xff1a docker镜像文件 从机 xff1a 本电脑 一 设置IP地址 1 确定ROS多机系统均处于同一网络 docker run it p 11311 11311 容器名 bin bash 进入容器 主机 xff1a 输入if
  • Qos介绍及功能->分类标记->流量管理(令牌桶)->拥塞管理与拥塞避免

    目录 一 QoS大纲思维导图 编辑 二 Qos概述 2 1 QOS三种服务模型 xff1a 2 1 1 尽力而为服务模型 2 1 2 综合服务模型 xff08 现实网络中并不多见 xff09 2 1 3 区分服务模型 xff08 目前最常用
  • socket can 编程

    Socket can 文档原名称 can txt 位于 linux 3 2 0 m3352 Documentation networking can txt CAN 控制器局域网络协议族之 Readme 文件 aka Socket CAN
  • 使用docker tag命令出错

    Docker Error parsing reference ykubuntu 1 3 u00a0 is not a valid repository tag invalid reference format docker tag ykub
  • 基于惯性飞轮倒立摆

    http www iqiyi com w 19rxrx3gi5 html
  • GPU云服务器安装图形化界面

    目录 安装图形化界面 GPU与图形化界面适配 在华为云上创建一个T4的GPU云服务器 xff0c 想安装一个图形化桌面使用 xff0c 这里记录一下安装过程 参考 xff1a https bbs huaweicloud com blogs
  • PX4飞控学习(二)

    CMakeList txt span class hljs comment span span class hljs comment 首先判断cmake版本 span span class hljs keyword if span span
  • 安装 Kubernetes 多集群管理工具-Kuboard v3

    方式1 安装 Kuboard v3 内建用户库 xff08 实践中采用的此方式 xff09 部署计划 在正式安装 kuboard v3 之前 xff0c 需做好一个简单的部署计划的设计 xff0c 在本例中 xff0c 各组件之间的连接方式
  • tf树的一些理解

    yaw is rotation about Z pitch is rotation about Y and roll is rotation about X xff09 tf下的发布静态坐标关系 xff1a lt launch gt lt

随机推荐