基于三角数系列将Pandas Dataframe拆分为多个Dataframe

时间:2017-06-01 20:36:19

标签: python pandas dataframe series

我有一个DataFrame(df),我需要根据列号将其拆分为n个数据帧。但是,它必须遵循三角系列模式:

df1 = df[[0]]
df2 = df[[1,2]] 
df3 = df[[3,4,5]]
df4 = df[[6,7,8,9]]

2 个答案:

答案 0 :(得分:0)

考虑数据框df

df = pd.DataFrame(
    np.arange(100).reshape(10, 10),
    columns=list('ABCDEFGHIJ')
)

df

    A   B   C   D   E   F   G   H   I   J
0   0   1   2   3   4   5   6   7   8   9
1  10  11  12  13  14  15  16  17  18  19
2  20  21  22  23  24  25  26  27  28  29
3  30  31  32  33  34  35  36  37  38  39
4  40  41  42  43  44  45  46  47  48  49
5  50  51  52  53  54  55  56  57  58  59
6  60  61  62  63  64  65  66  67  68  69
7  70  71  72  73  74  75  76  77  78  79
8  80  81  82  83  84  85  86  87  88  89
9  90  91  92  93  94  95  96  97  98  99

i_s, j_s = np.arange(4).cumsum(), np.arange(1, 5).cumsum()

df1, df2, df3, df4 = [
    df.iloc[:, i:j] for i, j in zip(i_s, j_s)
]

验证

pd.concat(dict(enumerate([df.iloc[:, i:j] for i, j in zip(i_s, j_s)])), axis=1)

    0   1       2           3            
    A   B   C   D   E   F   G   H   I   J
0   0   1   2   3   4   5   6   7   8   9
1  10  11  12  13  14  15  16  17  18  19
2  20  21  22  23  24  25  26  27  28  29
3  30  31  32  33  34  35  36  37  38  39
4  40  41  42  43  44  45  46  47  48  49
5  50  51  52  53  54  55  56  57  58  59
6  60  61  62  63  64  65  66  67  68  69
7  70  71  72  73  74  75  76  77  78  79
8  80  81  82  83  84  85  86  87  88  89
9  90  91  92  93  94  95  96  97  98  99

答案 1 :(得分:0)

首先获得三角数系列,然后将其应用于数据帧

n = len(df.columns.tolist())
end = 0
i = 0
res = []
while end < n:
 begin = end
 end = i*(i+1)/2
 res.append(begin,end)

idx = map( lambda x:range(x),res)
for i in idx:
 df[i]