合併

例如,給出了兩個表,

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