生成日期范围并插入数据框的新列

时间:2017-06-21 15:08:20

标签: python-3.x pandas numpy

问题陈述:创建一个包含多个列的数据框,并使用5分钟间隔的日期范围系列填充一列。

尝试过的解决方案:

  1. 最初只创建一行/ 5列(全部为“NAN”)。

  2. 用于生成日期范围的命令:

    rf = pd.date_range('2000-1-1', periods=5, freq='5min'). 
    

    rf的O / P:

    DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 00:05:00',
                   '2000-01-01 00:10:00', '2000-01-01 00:15:00',
                   '2000-01-01 00:20:00'],
                    dtype='datetime64[ns]', freq='5T')
    
  3. 当我尝试将rf分配给df的一列(df ['column1'] = rf)。时,它会抛出异常,如下所示(复制最后一行异常)。

    Traceback (most recent call last):
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/series.py", line 2879, in _sanitize_index
        raise ValueError('Length of values does not match length of ' 'index')
    
  4. 虽然我理解了这个问题,但我不知道解决方案。我正在寻找一种简单的方法来实现这一目标。

2 个答案:

答案 0 :(得分:1)

我想,我正在慢慢了解数据帧的功能/用法。

  • 最初创建一个数据框:

    df = pd.DataFrame(index=range(100),columns=['A','B','C'])
    
  • 然后创建了一个date_range。

    date = pd.date_range('2000-1-1', periods=100, freq='5T')
    
  • 使用“assign”功能,将date_range添加为已创建数据框(df)的新列。

    df = df.assign(D=date)
    

df的最终O / P:

df[:5]

 A    B    C                   D
 0  NaN  NaN  NaN 2000-01-01 00:00:00

 1  NaN  NaN  NaN 2000-01-01 00:05:00

 2  NaN  NaN  NaN 2000-01-01 00:10:00

 3  NaN  NaN  NaN 2000-01-01 00:15:00

 4  NaN  NaN  NaN 2000-01-01 00:20:00

答案 1 :(得分:0)

您的数据框只有一行,并且您尝试插入五行数据。