我在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

最佳答案

创建小时数组:

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)


将小时数组分配为数据框的新列:

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

关于python - 如何在带有小时列的Pandas数据框中“丰富”每条记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46850934/

10-12 21:57
查看更多