合并

例如,给出了两个表,

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

这是创建列 s1s2s3,每列对应一行(每个 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