我如何"丰富"带有小时列的Pandas数据框中的每条记录?

时间:2017-10-20 14:08:59

标签: python pandas

我在Pandas中有一些数据框:

 1   2
 a  .2
 a  .3
 b  .5

我想为每个记录添加一个小时(从0到23)的列,所以它看起来像

 1   2    3
 a  .2    0
 a  .2    1
 a  .2    2
...
 a  .2   23
 a  .3    0
 a  .3    1
...
 a  .3   23
 b  .5    0
...
 b  .5   23

2 个答案:

答案 0 :(得分:4)

创建小时数组:

import numpy as np
hours = np.tile(np.arange(24), len(df))

df的每条记录重复24次:

df = df.loc[df.index.repeat(24)].reset_index(drop=True)

hours 数组指定为数据框的新列:

df[3] = hours

df.head()
#   1     2 3
#0  a   0.2 0
#1  a   0.2 1
#2  a   0.2 2
#3  a   0.2 3
#4  a   0.2 4

放在一起:

def expand_hours(df):
    import numpy as np
    hours = np.tile(np.arange(24), len(df))
    df = df.loc[df.index.repeat(24)].reset_index(drop=True)
    df[3] = hours
    return df

答案 1 :(得分:0)

如果您的DataFrame被调用df,请尝试:

df['hour'] = Series(np.random.randint(0,24), index=df.index)

这应该添加一个名为'hour'的列,其中填充的是0到23之间生成的整数。