pandas 连接DataFrame中具有相同ID要素

ecr0jaav  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(122)

我的表中包含许多要素,这些要素可以具有相同的ID。如何检查每个要素的ID,然后将相同ID的要素连接到一行中,例如下面是一个存储在 Dataframe several features and one ID中的简单表的示例,输出将连接具有相同ID的所有要素,并将它们作为新要素,而对于ID不相同的要素,则将其作为新要素。具有其它特征t将是零值,如在该表result中。
先谢了。

omqzjyyz

omqzjyyz1#

IIUC,您可以用途:

dfx=df.groupby('ID').agg(list)
max_list_lenght=len(dfx.max()[0])
final=pd.DataFrame(dfx.apply(lambda x: [x[i][j] if len(x[i]) > j else 0 for j in range(0,max_list_lenght) for i in dfx.columns],axis=1).tolist(), index=dfx.index)
final.columns=['dat' + str(i) for i in range(1,len(final.columns) + 1)]

输出

dat1  dat2  dat3  dat4  dat5  dat6
ID                                    
1      9     3     6     5     7     7
2      5     5     5     6     5     5
3      3     0     5     0     0     0
mpgws1up

mpgws1up2#

join是您需要的。如果您不想丢失任何行,请指定how='outer'

df1.set_index('ID').join(df2.set_index('ID'), how='outer')

相关问题