python - 从一个分割列号创建多个数据框
问题描述
我有一个 105 列的数据框。我想创建 10 个数据帧,其中所有数据帧中都存在第 5 列,每个数据帧总共包含 15 列(10 个新列,来自大数据帧)。这意味着我想修复 5 列,将其余列号除以 10,然后将结果列号与那些固定的 5 列相加(按索引)。例如:
bigdf.columns= [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
smalldf1.columns=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
smalldf2.columns=[0,1,2,3,4,15,16,17,18,19,20,21,22,23,24]
有什么帮助吗?不确定我的解释是否合理。
解决方案
使用这样的简单循环并locals()
动态创建变量:
for i, c in enumerate(range(5, len(df.columns), 10), 1):
dfsmall = pd.concat([df.iloc[:, :5], df.iloc[:, c:c+10]], axis='columns')
locals()[f'dfsmall{i}'] = dfsmall
(数字 5 和 10 是硬编码以便于突出显示)
>>> dfsmall1
A B C D E F G H I J K L M N O
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
>>> dfsmall2
A B C D E P Q R S T U V W X Y
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
推荐阅读
- coq - 可判定子集类型术语的简单语法
- azure-devops - 可以更改 azure devops 中托管代理的时区吗?
- sql - 加入 4 个表会遗漏很多行,不知道为什么
- java - 单选按钮不显示错误文本消息
- javascript - SharePoint REST 查询返回 403 禁止错误
- specflow - 如何避免在 SpecFlow MsTest 中生成被忽略的测试?
- firebase - 颤振 | Firebase 用户身份验证和配置文件创建
- python - 是否可以对 spacy 实体类型进行子类化?
- angular - 嵌套订阅,内订阅依赖外订阅
- jquery - devbridge jquery 自动完成