python - 将数据帧/系列拆分为每个可能的 block

标签 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 个数字的每个可能 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)]

关于python - 将数据帧/系列拆分为每个可能的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58629229/

相关文章:

python - 计算偏置隐藏层

python - 对 python 文档中的公式范围感到困惑

r - 如何分割数据框?

python - 使用值列从 GPS 数据创建插值多边形

python - 如何将元组内的字典列表转换为 pandas DataFrame?

python - 无法从除收件箱以外的任何文件夹检索 Gmail 邮件(Python3 问题)

python - 将双值 numpy 数组屏蔽为 0-1 二进制数组

pandas - 按照以下唯一方式对行进行排序(列的值可以在同一行内互换,以对行进行排序)

python - 从 Pandas 数据框内的字典中提取值(Python)

python - 在 Pandas 中,找到每组中最小值大于值的行