合并
例如,给出了两个表,
T1
id x y
8 42 1.9
9 30 1.9
T2
id signal
8 55
8 56
8 59
9 57
9 58
9 60
目标是获得新表 T3:
id x y s1 s2 s3
8 42 1.9 55 56 58
9 30 1.9 57 58 60
这是创建列 s1
,s2
和 s3
,每列对应一行(每个 id
的行数总是固定的,等于 3)
通过应用 join
(它采用可选的 on 参数,可以是列或多个列名,指定传递的 DataFrame 将在 DataFrame 中的该列上对齐)。所以解决方案可以如下所示:
df = df1.merge(df2.groupby(‘id’)[‘signal’]。apply(lambda x:x.reset_index(drop = True))。unstack()
。reset`_index()`)
df
Out[63]:
id x y 0 1 2
0 8 42 1.9 55 56 59
1 9 30 1.9 57 58 60
如果我将它们分开:
df2t = df2.groupby('id')['signal'].apply(lambda x: x.reset_index(drop=True)).unstack().reset_index()
df2t
Out[59]:
id 0 1 2
0 8 55 56 59
1 9 57 58 60
df = df1.merge(df2t)
df
Out[61]:
id x y 0 1 2
0 8 42 1.9 55 56 59
1 9 30 1.9 57 58 60