【发布时间】:2020-03-30 16:38:30
【问题描述】:
我有一个格式如下的数据框:
data = pd.DataFrame({'ID':[1,1,1,2,2,2,2,3,3],'Time':[0,1,2,0,1,2,3,0,1],
'sig':[2,3,1,4,2,0,2,3,5],'sig2':[9,2,8,0,4,5,1,1,0],
'group':['A','A','A','B','B','B','B','A','A']})
print(data)
ID Time sig sig2 group
0 1 0 2 9 A
1 1 1 3 2 A
2 1 2 1 8 A
3 2 0 4 0 B
4 2 1 2 4 B
5 2 2 0 5 B
6 2 3 2 1 B
7 3 0 3 1 A
8 3 1 5 0 A
我想重塑和填充,使每个“ID”具有相同数量的时间值,sig1、sig2 用零(或 ID 内的平均值)填充,并且组带有相同的字母值。重新填充后的输出将是:
data_pad = pd.DataFrame({'ID':[1,1,1,1,2,2,2,2,3,3,3,3],'Time':[0,1,2,3,0,1,2,3,0,1,2,3],
'sig1':[2,3,1,0,4,2,0,2,3,5,0,0],'sig2':[9,2,8,0,0,4,5,1,1,0,0,0],
'group':['A','A','A','A','B','B','B','B','A','A','A','A']})
print(data_pad)
ID Time sig1 sig2 group
0 1 0 2 9 A
1 1 1 3 2 A
2 1 2 1 8 A
3 1 3 0 0 A
4 2 0 4 0 B
5 2 1 2 4 B
6 2 2 0 5 B
7 2 3 2 1 B
8 3 0 3 1 A
9 3 1 5 0 A
10 3 2 0 0 A
11 3 3 0 0 A
我的最终目标是最终将其重塑为具有形状的东西(ID 数、时间点数、序列数{2})。
似乎如果我旋转data,它会填充 nan 值,这对信号值很好,但对组则不行。我也希望避免循环遍历 data.groupby('ID'),因为我的实际数据有大量组,循环可能会很慢。
【问题讨论】:
-
您能否以更直观的格式添加预期的输出。我很难理解你到底想做什么。
-
这个问题比你的另一个问题好得多。