我有一个数据集:
dt = {'id': [120,120,120,120,120,121,121,345], 'day': [0, 1,2,3,4,0,2,0], 'value': [[0.3,-0.5,-0.7],[0.5,3.4,2.7],[0.45,3.4,0.7],[0.25,0.4,0.7],[0.15,0.34,0.17],[0.35,3.4,2.7],[0.5,3.44,2.57],[0.5,0.34,0.37]]}
df = pd.DataFrame(data=dt)
day id value
0 0 120 [0.3, -0.5, -0.7]
1 1 120 [0.5, 3.4, 2.7]
2 2 120 [0.45, 3.4, 0.7]
3 3 120 [0.25, 0.4, 0.7]
4 4 120 [0.15, 0.34, 0.17]
5 0 121 [0.35, 3.4, 2.7]
6 2 121 [0.5, 3.44, 2.57]
7 0 345 [0.5, 0.34, 0.37]
对于每个ID,应该有一个从0到5的天序列。在我的列ID数据集中,缺少了几天。我想为这些ID添加缺少的天数,并为相应的“值”列添加零数组。
结果:
day id value
0 0 120 [0.3, -0.5, -0.7]
1 1 120 [0.5, 3.4, 2.7]
2 2 120 [0.45, 3.4, 0.7]
3 3 120 [0.25, 0.4, 0.7]
4 4 120 [0.15, 0.34, 0.17]
5 0 121 [0.35, 3.4, 2.7]
6 1 121 [0, 0, 0]
7 2 121 [0.5, 3.44, 2.57]
8 3 121 [0, 0, 0]
9 4 121 [0, 0, 0]
10 0 345 [0.5, 0.34, 0.37]
11 1 345 [0, 0, 0]
12 2 345 [0, 0, 0]
13 3 345 [0, 0, 0]
14 4 345 [0, 0, 0]
这是样本空间。我将在一个巨大的数据集上做这个。
我的尝试:
r1=0
for i in df.id.unique():
val=df.loc[df['id'] == i]
mx=val.loc[val['day'].idxmax()].day
for index,row in val.iterrows():
if row.day!=r1:
for k in range(int(row.day)-r1-1):
a.append(np.asarray([0]*3))
r1=row.day
else:
a.append(row.value)
if(row.day==mx):
a.append(row.value)
for j in range(4-mx):
a.append(np.asarray([0]*3)))
r1=r1+1
但是这段代码不起作用。
我该怎么做呢?
蛊毒传说
相关分类