将数据框/系列拆分为每个可能的块

时间:2019-10-30 15:51:55

标签: python pandas dataframe

我正在尝试将一个数据帧拆分为多个子数据帧。到目前为止,我正在使用:

a = pd.Series(1, 2, 3, 4, 5, 6, 7, 8 ,9, 10)
df = pd.DataFrame(data=a)
def split(df, chunkSize = 3):
    return np.array_split(df, chunkSize)

问题是,这将返回3个数据帧(123; 456; 789),但我试图获取的是df中包含的3个数字的每个可能块。因此,在这种情况下:(123,234,345,456,567,678,8910)。 我知道有关拆分数据帧的其他问题,但是我仍然找不到此特定问题。 有解决这个问题的简单方法吗?

1 个答案:

答案 0 :(得分:0)

这是一种方法:

import itertools
def split_chunk(series,chunk):
    return [[*g][0] for k,g in (itertools.groupby([*itertools.combinations(series,chunk)]
                                         ,key=operator.itemgetter(0)))]

split_chunk(df[0],3)

输出:

[(1, 2, 3),
 (2, 3, 4),
 (3, 4, 5),
 (4, 5, 6),
 (5, 6, 7),
 (6, 7, 8),
 (7, 8, 9),
 (8, 9, 10)]