我在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
答案 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之间生成的整数。