【问题标题】:Python: Create data-frame of size 12 from a data set of 300 such that it contain 0:12, 1:13, 2:14 and so onPython:从 300 个数据集创建大小为 12 的数据框,使其包含 0:12、1:13、2:14 等
【发布时间】:2019-09-17 06:25:05
【问题描述】:

我有一个超过 300 行的数据框,我希望提取 12 个大小的数据框,例如:0:12、1:13、2:14、3:15 等等,就像一个移动的窗口,并将每个数据框存储在数据框。

我尝试过手动获取此内容,但以以下方式执行此操作需要大量时间:

dfa=df3[:12]
dfb=df3[1:13]
dfc=df3[2:14]
dfd=df3[3:15]
dfe=df3[4:16]
dff=df3[5:17]
dfg=df3[6:18]
dfh=df3[7:19]
dfi=df3[8:20]
dfj=df3[9:21]
dfk=df3[10:22]
dfl=df3[11:23]

任何帮助将不胜感激。

【问题讨论】:

  • 你为什么不尝试使用for循环?
  • 更好地使用列表或字典而不是dfadfb等,即。 all_df = [] 然后你可以做for x in range(12): all_df.append(df3[x:x+12])

标签: python loops dataframe data-science data-analysis


【解决方案1】:

您可以根据需要使用列表推导来获取数据帧数组

size = 12
dfs = [df[i:i+size] for i in range(len(df)-size+1)]

【讨论】:

    【解决方案2】:

    编辑:您可以使用循环从 0 迭代到数据帧行的长度 - 您预期的数据帧分区长度。就像您的数据框中有 300 行一样,在 0,300-11 的范围之间进行迭代。然后将该分区附加到之前启动的列表中。

    new_list = [[]]
    for i in range(df.shape[0]-11):
        new_list.append([df[i:i+12]])
    #delete the first index of list which is []
    del new_list[0]
    print(new_list)
    

    【讨论】:

    • 所提供的答案被标记为低质量帖子以供审核。以下是How do I write a good answer? 的一些指南。提供的这个答案可能是正确的,但它可以从解释中受益。仅代码答案不被视为“好”答案。来自review
    • 感谢您对我的启发。我会记住这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多