我想使用pandas在MySQL中执行GROUP BY / GROUP_CONCAT之类的操作。假设我有:
table_a
col_a col_b
A 1
B 2
C 2
table_b
col_a col_c
A VALUE_1
A VALUE_2
B VALUE_3
C VALUE_4
我想要一个新的table_c,如下所示:
col_a col_b col_c
A 1 VALUE_1, VALUE_2
B 2 VALUE_3
C 2 VALUE_4
我一直在使用 pd.merge ,但是我找不到一种方法来进行串联并避免重复。
答案 0 :(得分:4)
groupby
在merge
之前,确保'col_a'
在正确的框架中是唯一的:
df1.merge(df2.groupby('col_a').col_c.apply(', '.join).reset_index())
col_a col_b col_c
0 A 1 VALUE_1, VALUE_2
1 B 2 VALUE_3
2 C 2 VALUE_4
答案 1 :(得分:4)
或者在agg
之后使用merge
df1.merge(df2).groupby('col_a',as_index=False).agg({'col_b':'first','col_c':','.join})
Out[46]:
col_a col_b col_c
0 A 1 VALUE_1,VALUE_2
1 B 2 VALUE_3
2 C 2 VALUE_4