合併
例如,給出了兩個表,
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