python数据框循环生成_python - 如何在 Pandas 的for循环迭代中创建多个数据框?
我需要在熊猫中创建一个函数,该函数将单个数据框作为输入,并根据特定条件返回多个数据框作为输出。 (请检查下面的示例以了解情况)。我很难弄清楚如何做。我需要一些专家的编码建议。
范例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循环迭代中创建多个数据框?相关推荐
- python installer 在 mac 运行_python – 如何在Mac OS X 10.7中的virtualenv中安装PyAudio
我努力了 easy_install pyaudio 它不起作用我得到以下内容: Searching for pyaudio Reading http://pypi.python.org/simple/ ...
- 【pandas】将单元格中的多个数据拆分为多行数据(explode),以csv文件为源文件进行处理
[pandas]将单元格中的多个数据拆分为多行数据(explode) 1.原始数据(test.csv) 2.需求 将"别名"."科目"这两列中带有多个数据的单元 ...
- python可视化界面自动生成_python生成界面
广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 前言对于一些 python 脚本,我们想把它打包给其他人使用,不是黑色的命令行框,而是打包成一个有界面的程序包给别人,让普通用 ...
- python中for循环缩进_Python基础- 缩进,选择和循环
缩进: Python最具特色的是用缩进来标明成块的代码.下面我以if选择结构来说一下 if x >0: print "Test" print "Hello,worl ...
- gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化
gdb -iex Python is an excellent programming language for creating data visualizations. Python是用于创建数据 ...
- python如何安装panda数据库_python怎么安装pandas
撸主: 大毛 岂安科技业务风险分析师 多年订单业务反欺诈经验,负责岂安科技多款产品运营工作. 上回笔者分享过一些 pandas 的常用数据查询语法,但是数据查询对于 pandas 而言只是冰山一角,它 ...
- Python网络编程(06)----MySQL8.0介绍--01(使用command命令创建数据库以及数据表)
学习python网络编程最重要的是学会用数据库,数据库的基础知识这里不作介绍,主要讲解使用command命令创建数据库,并往数据库里面插入数据表并查看.然后再用python调用pymysql访问以及操 ...
- 【Windows 逆向】OD 调试器工具 ( CE 工具通过查找访问的方式找到子弹数据基地址 | 使用 OD 工具附加游戏进程 | 在 OD 工具中查看 05869544 地址数据 | 仅做参考 )
文章目录 一.CE 工具通过查找访问的方式找到子弹数据基地址 二.使用 OD 工具附加游戏进程 三.在 OD 工具中查看 05869544 地址数据 一.CE 工具通过查找访问的方式找到子弹数据基地址 ...
- linux添加以太网头部函数,linux – 在内核模块中创建一个以太网数据包并发送它...
我需要创建一个以太网数据包并在我的内核模块中发送它.有人可以帮我这样做吗? 我想我需要使用dev_alloc_skb创建一个skb,然后我需要编写mac_ethernet,插入数据并使用dev_que ...
最新文章
- 黑客解锁微信一键洗白、删好友、批量实名认证功能!38 名“海贼王”被判刑...
- Nginx配置中一个不起眼字符/的巨大作用,失之毫厘谬以千里
- 2015-12-18 学习心得
- menuItem无法响应点击事件
- Java实现话术词槽匹配_知识图谱与KBQA——槽填充
- Serval and Bus
- 当重复调用addsubview时出现显示重叠问题
- 人工智能先驱 Nils Nilsson 去世,吴恩达、Yann LeCun 悼念
- sql语句中使用函数会耗费性能吗_挽救数据库性能的 30 条黄金法则 | 原力计划...
- 【报告分享】中国老龄化社会的潜藏价值系列报告:第三篇章-银发经济的基本盘和新常态.pdf...
- (转)eclipse常用插件在线安装地址或下载地址
- 数独问题流程图_数独求解算法
- 详解三相直流无刷电机驱动器硬件原理图
- win7系统关闭蓝牙服务器,深度官方Win7旗舰版系统如何开启蓝牙功能服务
- Python一些常用的网站
- 基于Qt的ui图形化界面进行的界面设计
- pycharm的 crtl + r 使用正则表达式进行 request-header格式更改
- apache上放多个项目_20个创新的Apache项目
- BUUCTF-千层套路(python脚本)
- JavaWeb - 软件开发的流程,综合案例
热门文章
- USB设备驱动之设备初始化(设备枚举)
- 两个队列+k叉哈夫曼树 HDU 5884
- 第一次ActiveX Fuzzing测试
- 测试内存对齐对运行速度的影响
- 你搞清楚「NULL」、「0」、「'0'」、「0」「\0」了吗?
- 【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板
- 每日一题(33)——用两个栈实现一个队列的功能?要求给出算法和思路
- TQ210 —— S5PV210 gboot设计
- uasset python_Unreal Python 结合 C++ 开发蓝图库插件
- LeetCode 2023. 连接后等于目标字符串的字符串对