【问题标题】:Split a dataframe/Series into every possible chunk将数据框/系列拆分为每个可能的块
【发布时间】:2020-02-25 23:31:16
【问题描述】:

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

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)。 我知道有关拆分数据帧的其他问题,但我仍然找不到这个特定问题。 有没有简单的方法来解决这个问题?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这是一种方法:

    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)]
    

    【讨论】:

    • 它说没有定义名称'operator'。代码中是否缺少某些内容?
    • @Elias 在运行此之前只需执行import operator
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多