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&多路归并 的相关文章

  • kubernetes(k8s)高可用集群:导读

    本文内容以语雀为准 Master xff08 Control Plane xff09 的 kube apiserver kube controller manager kube scheduler 服务至少有3个节点Master xff08
  • 附录8:批量删除 k8s(ctr)使用的历史镜像

    以语雀文档为准 说明 以 k8s 使用 containerd 为例k8s 滚动发布时 xff0c 一般采用改动镜像ID xff0c 比如 xff1a 某个镜像 xff0c 首次发布的时候是 0 0 1 SNAPSHOT xff0c 第一次更
  • 附录7:CentOS MySQL 安装

    以语雀 文档为准 安装镜像源 CentOS 7 CentOS 8 MySQL 5 7 yum y install http repo mysql com mysql57 community release el7 rpm 官方未提供 xff
  • 附录6、Ubuntu 乌班图 源码编译 异常处理

    以语雀 文档为准 异常 error C compiler cc is not found 解决 xff1a span class token function sudo span span class token function apt
  • 附录5:CentOS、Anolis 龙蜥 源码编译 异常处理

    以语雀 文档为准 异常 xff1a bin sh cc span class token builtin class name command span not found 解决 xff1a yum y span class token f
  • 关于angularJS绑定数据时自动转义html标签

    对于前后台分离开发 xff0c 在使用angular为开发框架的时候 xff0c 如果后台在返回数据的时候包含html格式的数据 xff0c angularJS在进行数据绑定时默认是会以文本的形式输出 xff0c 也就是对你数据中的html
  • 附录1:配置 containerd 加速

    以语雀 文档为准 说明 不推荐在 k8s 网络配置前加速 xff0c 可能会导致无法拉取镜像 xff08 原因可能是镜像的原因 xff0c 或者是配置的原因 xff0c 可以考虑事先或报错时手动拉取镜像 xff09 安装 span clas
  • 附录2:CentOS 下载

    以语雀 文档为准 视频演示 点击查看 bilibili CentOS Vault Mirror CentOS 7 8 最新版 xff08 含各大云厂商的镜像 xff09 CentOS 7 http isoredirect centos or
  • 附录3:Anolis 龙蜥 下载

    以语雀 文档为准 视频演示 点击查看 bilibili 官网 xff1a https openanolis cn 7 7 正式版 https mirrors openanolis cn anolis 7 7 isos GA x86 64 7
  • 附录4:Ubuntu 乌班图 下载

    以语雀 文档为准 https releases ubuntu com https old releases ubuntu com releases 版本号 版本代号 下载地址 14 04 5 Trusty Tahr https old re
  • 小工具1:tcping

    以语雀 文档为准 说明 tcping exe 是一个控制台应用程序 xff0c 其操作类似于 ping xff0c 但它在tcp端口上工作 在 Windows 上要查看指定 IP 端口 是否连通 xff0c 通常要使用 telnet xff
  • 小工具2:Windows curl.exe

    以语雀 文档为准 GitHub 仓库 xff1a https github com curl curlGitHub 仓库 Windows 版 xff1a https github com curl curl for win下载页面 xff1
  • 小工具3:Windows tail.exe

    以语雀 文档为准 文件 xff1a tail zip xff0c 文件来源于网络 xff0c 用于实时查看文件内容 xff0c 与 Linux 的 tail 有相同的用法 下载上述文件 xff0c 解压 xff0c 将 tail exe 放
  • 小工具4:Windows cports.exe

    以语雀 文档为准 文件 cports zip xff0c 文件来源于网络 xff0c 用于实时查看端口占用情况 xff0c 使用管理员权限运行时 xff0c 可杀端口 下载上述文件 xff0c 解压 xff0c 将 cports exe 放
  • 为何在 node 项目中使用固定版本号,而不使用 ~、^?

    以语雀 文档为准 使用 时吃过亏希望版本号掌握在自己手里 xff0c 作者自己升级 xff08 跟随官方进行升级 xff0c 就算麻烦作者 xff0c 也不想麻烦使用者 xff09 虽然 pnpm 很好用 xff0c 但是不希望在项目中用到
  • 导读 2、kubernetes(k8s)导读

    以语雀 文档为准 内容来自 Kubernetes 权威指南 第5版等 kubernetes 是什么 xff1f kubernetes是一个全新的基于容器技术的分布式架构领先方案 xff0c 是容器云的优秀平台选型方案 xff0c 已经成为新
  • 区块链——脱坑truffle

    使用truffle构建一个智能合约 实现输出 helloworld 的功能 网上有很多帖子 但也有很多坑 这里展示我的搭建过程 帮助大家绕过那些麻烦 一 安装web3 solc truffle npm g install solc npm
  • 使用fescar遇到can not register RM,err:can not connect to fescar-server.

    前提 如果你看到了这篇文章 xff0c 说明你已经成功跑起了阿里爸爸fescar官方提供的example和server xff0c 并且你的客户端和服务端之间心跳正常 xff0c 但是当客户端进行事务操作时却提示以下错误 com span
  • Arch常用软件

    常用软件 开发 gitandroid studiovim 图形界面 网络 pacman S networkmanager 启动其提供的服务 systemctl start NetworkManager service 让服务开机自启 sys
  • CentOS可以使用的yum仓库地址

    name 61 CentOS 6 6 Base baseurl 61 http mirrors aliyun com centos vault 6 6 os x86 64 gpgcheck 61 1 gpgkey 61 http mirro

随机推荐

  • pyqt错误:Unresolved reference 和 正确安装pycharm+python+pyqt5

    写如下代码 xff1a span class hljs keyword import span sys span class hljs keyword from span PyQt5 span class hljs keyword impo
  • 以下是adb工具包最新Google官方版下载地址:

    以下是adb工具包最新Google官方版下载地址 xff1a ADB和Fastboot for Windows https dl google com android repository platform tools latest win
  • java.lang.UnsupportedOperationException 及resultMap相关知识

    起因 今天在请求数据库数据时报错java lang UnsupportedOperationException xff0c 从字面上理解错误的含义就是不支持的操作异常 xff0c 后面定位到错误发生在数据库sql语句中 xff0c 具体原因
  • Spring Boot配置类处理

    ConfigurationClassPostProcessor处理所有配置类 xff0c 包括 64 Component 64 Bean 64 Import注解等 由于配置类可能会引入新的配置类 xff0c 新的配置类也需要被处理 xff0
  • 数据库范式1NF 2NF 3NF详细阐述

    范式 xff1a 关系数据库中的关系是要满足一定要求的 xff0c 满足不同程度要求的不同范式 满足最低要求的叫第一范式 xff0c 简称1NF xff0c 在第一范式中满足进一步要求的为第二范式 xff0c 其余以此类推 通俗来说是满足数
  • 记一次 Native Crash Abort message:‘FORTIPY :vsprintf:prevented 33-byte write into 32-byte buffer ’

    先贴上关键日志 第一眼看到日志 xff0c 以为是缺少了Arm64 的so文件 xff0c 查看后发现并没缺少 xff1b 无奈之下 xff0c 只有复现这个Crash xff0c 一点点缩小排查范围 xff1b 最终将问题的矛头指向了项目
  • spring Bean的完整生命周期

    spring bean的完整生命周期 1 1 容器启动时 BeanFactoryPostProcessor gt postProcessBeanFactory Spring IoC容器允许BeanFactoryPostProcessor在容
  • 1秒学会 Vim 插件管理

    Vim pathogen 通常情况下安装vim插件 xff0c 通常是将所有的插件和相关的doc文件都安装在中一文件夹中 xff0c 如将插件全部安装在 usr share vim vim73 plugin 目录下 xff0c 将帮助文档全
  • 【树莓派4B】Manjaro-ARM系统下配置VNC以及遇到的问题

    在两三个小时内经历了各种尝试之后 xff0c 终于成功 xff0c 现在记录一下过程 xff0c 以免下次忘记 系统 xff1a 我实在树莓派4B 8G版上安装了Manjaro 1 下载 wget https github com azal
  • 【硬件调试】串口乱码原因汇总

    一般有以下几种原因 xff0c 列举一下提醒自己 1 波特率出错或者其他串口设置出错 2 三线即可进行通信 xff0c 未接地或者接触不良 xff0c TTL 232 TX RX接反 xff0c 485 A B接反 3 如果接电脑可以通信
  • 真实面试题-高并发如何设置JVM参数

    阿里终面 xff1a 每天100w次登陆请求 xff0c 8G内存该如何设置JVM参数 设置内存大小 由于服务器只有8G内存 xff0c 需要合理分配内存给JVM xff0c 避免过度分配导致内存不足 xff0c 也避免分配不足导致频繁的垃
  • 项目切换分支后突然kotlin not configured

    从其他分支切换回来新功能开发分支后提示kotlin not configured 搜索网上提示是版本问题 要将jre8去掉 如 implementation 39 org jetbrains kotlin kotlin stdlib jre
  • 从安卓系统USB升级包里提取system.img、boot.img和recovery.img在内的镜像文件

    1 前言 如果你拿到一个USB升级包 xff0c 你会发现升级包的结构基本相似 但是里面并不是直接就有包括system img boot img和recovery img在内的镜像文件 如果我们需要在Android手机上获取Magisk 提
  • 使用PE微盘制作启动U盘变成两个盘符后,恢复原始状态

    在利用好系统U盘启动制作了U盘启动盘后 xff0c 我们就可以重装系统了 重装系统后 xff0c 有些朋友想要将U盘启动盘复原成普通U盘 xff0c 但发现仅仅靠格式化还不能完全释放空间 xff0c 这该怎么办呢 xff1f 别着急 xff
  • Idea搭建第一个Vue脚手架项目和遇到的问题

    官方教程传送门 新旧版的命令和项目结构不太一样 xff0c 具体可以看上面的官方文档 配置环境 见https blog csdn net qq 33189961 article details 106970036 在IDEA新建static
  • docker部署nodejs项目

    本文主要分享使用docker部署nodejs项目 使用docker部署项目主要分为三步 1 创建nodejs项目 编写package json为项目安装依赖所用 34 name 34 34 expressPro 34 34 version
  • Android 开发跨进程大图

    对于跨进程传输数据的问题 xff0c 我之前也写了一篇 xff0c 配合阅读效果更好 xff1a Android 开发太难了 xff0c 这异常竟然捕获不到 xff1f 1 抛一个问题 这一天 xff0c 法海想锻炼小青的定力 xff0c
  • linux修改键位:ctrl与caps调换

    ctrl比caps的使用频率更高 xff0c 但是ctrl的位置却对小拇指并不友好 有时使用gnome tweak tool设置键位并没有生效 下面介绍两个简单的方法修改键位 1 使用xmodmap修改键位 我们可以使用包管理器轻松安装xm
  • pandas无法打开.xlsx文件,xlrd.biffh.XLRDError: Excel xlsx file; not supported

    原因是最近xlrd更新后只支持 xls文件 所以pandas read excel xxx xlsx 会报错 可以安装旧版xlrd xff0c 在终端中运行 xff1a pip3 uninstall xlrd pip3 install xl
  • python&多路归并

    问题 xff1a 在项目中 xff0c 需从待分析的数据中选出最大的前几名 xff0c 但由于数据量太大 xff0c 直接排序会内存报错 xff0c 因此尝试用多路归并的思路来解决问题 接口 xff1a 一个目录下有x个已排序好的csv 最