首页 > 解决方案 > 从一个分割列号创建多个数据框

问题描述

我有一个 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]

有什么帮助吗?不确定我的解释是否合理。

标签: pythonpandas

解决方案


使用这样的简单循环并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


推荐阅读