【问题标题】:how to split dataframe vertically, having N columns in each resulting DF如何垂直拆分数据框,在每个生成的 DF 中有 N 列
【发布时间】:2018-07-06 16:40:16
【问题描述】:

我有下面的数据框

Date     2017-12-05 2017-12-06 2017-12-15 2017-12-19 2017-12-20  2017-12-21   ....
time                                                                         
00:00:00      19.94      21.19      21.88      20.76      21.26      21.26   
00:15:00      20.29      21.07      21.71      21.79      21.95      21.52   
00:30:00      21.03      21.25      21.80      22.15      22.26      21.62   
00:45:00      22.20      21.56      22.77      22.20      22.33      21.91   
01:00:00      23.25      22.15      23.71      22.31      22.69      21.99   
01:15:00      23.78      23.33      24.53      22.29      22.82      22.58

列是日期,我想将数据框拆分为每 3 个日期列。 我该怎么做 ?

例如,如下所示,想要每 3 列生成日期帧 (以下是第一个数据框...每 3 个日期列制作一次数据框

Date      2017-12-05 2017-12-06 2017-12-15 2
     time                                                                         
     00:00:00      19.94      21.19      21.88      
     00:15:00      20.29      21.07      21.71      
     00:30:00      21.03      21.25      21.80      
     00:45:00      22.20      21.56      22.77      
     01:00:00      23.25      22.15      23.71      
     01:15:00      23.78      23.33      24.53

【问题讨论】:

    标签: python pandas date split


    【解决方案1】:

    你可以使用np.split(..., axis=1):

    In [157]: N = 3
    
    In [158]: dfs = np.split(df, np.arange(N, len(df.columns), N), axis=1)
    
    In [159]: dfs[0]
    Out[159]:
              2017-12-05  2017-12-06  2017-12-15
    00:00:00       19.94       21.19       21.88
    00:15:00       20.29       21.07       21.71
    00:30:00       21.03       21.25       21.80
    00:45:00       22.20       21.56       22.77
    01:00:00       23.25       22.15       23.71
    01:15:00       23.78       23.33       24.53
    
    In [160]: dfs[1]
    Out[160]:
              2017-12-19  2017-12-20  2017-12-21
    00:00:00       20.76       21.26       21.26
    00:15:00       21.79       21.95       21.52
    00:30:00       22.15       22.26       21.62
    00:45:00       22.20       22.33       21.91
    01:00:00       22.31       22.69       21.99
    01:15:00       22.29       22.82       22.58
    

    【讨论】:

    • 这会在没有的情况下给出错误。 of columns 不是您拆分的数字的倍数
    • 我无法从文档中弄清楚如何使用这个 indices_or_sections 参数。在任何情况下,都可以截断数据帧,以便可以使用 np.split 对其进行拆分,然后(如果需要/需要)考虑其余部分。
    • 我现在还注意到标题没有意义:“水平拆分”,然后按列!?
    • @user2314737,哦,我的错。 Now I see ... :-)
    【解决方案2】:

    类似的东西

    ddf=[]
    for i in range(len(df.columns)/3):
        ddf.append(df[df.columns[3*i:3*i+3]])
    

    生成数据框列表df,每个数据框有 3 列。 添加其余部分(少于 3 列):

    ddf.append(df[df.columns[3*(i+1):]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多