我需要在熊猫中创建一个函数,该函数将单个数据框作为输入,并根据特定条件返回多个数据框作为输出。 (请检查下面的示例以了解情况)。我很难弄清楚如何做。我需要一些专家的编码建议。

范例1:

输入= 100列的数据框

输出=数据帧1的前10%列(第1到10列),数据帧2的后10%列(第11到20列),依此类推,直到最后10%的列(第91到100列)。

范例2:

输入= 109列的数据框

输出=列的前10%的dataframe1(四舍五入)(第1到11列),列的后10%的dataframe2(第12到23列),依此类推,直到最后10%的列(第109列)

这是我尝试开发的逻辑:

从总数的10%值中找到原始数据帧中的列为'n'

从原始数据框中选择第一个“ n”列。

将它们添加到新的数据框

从原始数据框中删除它们

检查原始数据帧中的列总数是否大于“ n”

如果否->重复步骤2至步骤5。

如果是->将所有剩余的列添加到最后创建的列

数据框。

我尝试了以下代码,但这是错误的。在下面的代码中,我尝试基于拆分百分比获取受尊重的列号,稍后我计划使用iloc函数使用这些数字拆分数据帧。def split_column_numbers(total_columns, percentage_split):

list1 = []

number = round((total_columns * (percentage_split/100)))

list1.append([0,number])

for i in range(number):

last_num = list1[-1][-1]

if (last_num < total_columns):

if((total_columns-last_num) > number):

list1.append([last_num+1, last_num+number])

else:

list1.append([last_num+1, total_columns])

return list1

split_column_numbers(101, 10)

谁能帮我这个逻辑是否正确以及如何实现?

最佳答案

如果将框架直接传递给该函数,则应该使您更容易确定以后要抓取的列。我们可以使用math.ceil进行四舍五入,并使用itertools.zip_longest划分为子组。from itertools import zip_longest

from math import ceil

def split_columns(frame, percentage_split):

cols = frame.columns

grp_size = ceil(len(cols) * percentage_split/100)

return [[c for c in grp if c] for grp in zip_longest(*(iter(cols),) * grp_size)]

例如,如果我们按如下所示设置一个虚拟框架:

from string import ascii_lowercase

import pandas as pd

tmp = pd.DataFrame(columns=list(ascii_lowercase))

然后,如果我们执行split_columns(tmp, 10),则会得到:

[['a', 'b', 'c'],

['d', 'e', 'f'],

['g', 'h', 'i'],

['j', 'k', 'l'],

['m', 'n', 'o'],

['p', 'q', 'r'],

['s', 't', 'u'],

['v', 'w', 'x'],

['y', 'z']]

如果我们执行split_columns(tmp, 30),则会得到:

[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'],

['i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'],

['q', 'r', 's', 't', 'u', 'v', 'w', 'x'],

['y', 'z']]

然后,如果我们要使用这些列选择来创建新框架,则可以使用字典理解和enumerate来实现:

frames = {i: tmp[cols] for i, cols in enumerate(split_columns(tmp, 30))}

这给了我们一个字典,其中的键是整数(第一组列对应于0,第二组对应于1等),值是从数据帧中选择的列。

python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?相关推荐

  1. python installer 在 mac 运行_python – 如何在Mac OS X 10.7中的virtualenv中安装PyAudio

    我努力了 easy_install pyaudio 它不起作用我得到以下内容: Searching for pyaudio Reading http://pypi.python.org/simple/ ...

  2. 【pandas】将单元格中的多个数据拆分为多行数据(explode),以csv文件为源文件进行处理

    [pandas]将单元格中的多个数据拆分为多行数据(explode) 1.原始数据(test.csv) 2.需求 将"别名"."科目"这两列中带有多个数据的单元 ...

  3. python可视化界面自动生成_python生成界面

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 前言对于一些 python 脚本,我们想把它打包给其他人使用,不是黑色的命令行框,而是打包成一个有界面的程序包给别人,让普通用 ...

  4. python中for循环缩进_Python基础- 缩进,选择和循环

    缩进: Python最具特色的是用缩进来标明成块的代码.下面我以if选择结构来说一下 if x >0: print "Test" print "Hello,worl ...

  5. gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化

    gdb -iex Python is an excellent programming language for creating data visualizations. Python是用于创建数据 ...

  6. python如何安装panda数据库_python怎么安装pandas

    撸主: 大毛 岂安科技业务风险分析师 多年订单业务反欺诈经验,负责岂安科技多款产品运营工作. 上回笔者分享过一些 pandas 的常用数据查询语法,但是数据查询对于 pandas 而言只是冰山一角,它 ...

  7. Python网络编程(06)----MySQL8.0介绍--01(使用command命令创建数据库以及数据表)

    学习python网络编程最重要的是学会用数据库,数据库的基础知识这里不作介绍,主要讲解使用command命令创建数据库,并往数据库里面插入数据表并查看.然后再用python调用pymysql访问以及操 ...

  8. 【Windows 逆向】OD 调试器工具 ( CE 工具通过查找访问的方式找到子弹数据基地址 | 使用 OD 工具附加游戏进程 | 在 OD 工具中查看 05869544 地址数据 | 仅做参考 )

    文章目录 一.CE 工具通过查找访问的方式找到子弹数据基地址 二.使用 OD 工具附加游戏进程 三.在 OD 工具中查看 05869544 地址数据 一.CE 工具通过查找访问的方式找到子弹数据基地址 ...

  9. linux添加以太网头部函数,linux – 在内核模块中创建一个以太网数据包并发送它...

    我需要创建一个以太网数据包并在我的内核模块中发送它.有人可以帮我这样做吗? 我想我需要使用dev_alloc_skb创建一个skb,然后我需要编写mac_ethernet,插入数据并使用dev_que ...

最新文章

  1. 黑客解锁微信一键洗白、删好友、批量实名认证功能!38 名“海贼王”被判刑...
  2. Nginx配置中一个不起眼字符/的巨大作用,失之毫厘谬以千里
  3. 2015-12-18 学习心得
  4. menuItem无法响应点击事件
  5. Java实现话术词槽匹配_知识图谱与KBQA——槽填充
  6. Serval and Bus
  7. 当重复调用addsubview时出现显示重叠问题
  8. 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念
  9. sql语句中使用函数会耗费性能吗_挽救数据库性能的 30 条黄金法则 | 原力计划...
  10. 【报告分享】中国老龄化社会的潜藏价值系列报告:第三篇章-银发经济的基本盘和新常态.pdf...
  11. (转)eclipse常用插件在线安装地址或下载地址
  12. 数独问题流程图_数独求解算法
  13. 详解三相直流无刷电机驱动器硬件原理图
  14. win7系统关闭蓝牙服务器,深度官方Win7旗舰版系统如何开启蓝牙功能服务
  15. Python一些常用的网站
  16. 基于Qt的ui图形化界面进行的界面设计
  17. pycharm的 crtl + r 使用正则表达式进行 request-header格式更改
  18. apache上放多个项目_20个创新的Apache项目
  19. BUUCTF-千层套路(python脚本)
  20. JavaWeb - 软件开发的流程,综合案例

热门文章

  1. USB设备驱动之设备初始化(设备枚举)
  2. 两个队列+k叉哈夫曼树 HDU 5884
  3. 第一次ActiveX Fuzzing测试
  4. 测试内存对齐对运行速度的影响
  5. 你搞清楚「NULL」、「0」、「'0'」、「0」「\0」了吗?
  6. 【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板
  7. 每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路
  8. TQ210 —— S5PV210 gboot设计
  9. uasset python_Unreal Python 结合 C++ 开发蓝图库插件
  10. LeetCode 2023. 连接后等于目标字符串的字符串对