Skip to main content
 首页 » 编程设计

python之如何垂直拆分数据框,在每个结果 DF 中有 N 列

2025年05月04日14zhenyulu

我有以下数据框:

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 个日期列拆分数据框。我该怎么做?

最终结果的说明以及拆分后的结果数据帧之一:

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 

请您参考如下方法:

你可以使用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