我正在尝试将数据帧拆分为多个子数据帧。到目前为止我正在使用:
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 个数字的每个可能 block 。因此在本例中:(123, 234, 345, 456, 567, 678, 8910)。我知道有关拆分数据帧的其他问题,但我仍然找不到这个具体问题。有没有简单的方法可以解决这个问题?
这是一种方法:
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)]
我是一名优秀的程序员,十分优秀!