我有一个如下所示的数据框:
# df
colA colB
rqqrs vqtr
MNO vqtr
japl vqtr
nsam2 raqm
many 3tyua
3juaik7 3tyua
janit yua7us
我希望从此数据框中获得的结果是将colA的行合并在一起在ColB中具有相同的值。例如在上表中的前三行应该合并为单行,因为这些行的ColB的所有值都相同。
因此输出应如下所示(定界符可以是分号或:&等,在下面的示例中,我使用的是:&)
# newdf:
colA coLB
rqqrs;& MNO;& japl vqtr
nsam2 raqm
many ;& 3juaik7 3tyua
janit yua7us
老实说,我对如何实现这一目标并不了解。我尝试按ColB对旧数据框进行分组,然后将ColB唯一条目用作字典中的键,并尝试将ColA条目放入值中。
但是,似乎没有任何作用。如果我可以得到一些帮助,那将非常有帮助。
我们可以用agg
做join
df.groupby('colB').colA.agg(' ;&'.join)
colB
3tyua many ;&3juaik7
raqm nsam2
vqtr rqqrs ;&MNO ;&japl
yua7us janit
Name: colA, dtype: object
或者,您可以将'groupby'与'apply(list)'结合使用。 '.unique()'确保元素仅列出一次:
df_grouped=df.groupby('colB')['colA'].unique().apply(list)