我有一个数据框架。
df
SIN MOL
339940 250000
322291 250000
321234 850000
我想检查MOL的值是否相等,并在下一个数据帧中显示为
df1
SIN1 SIN2 MOL1 MOL2
339940,322291 321234 250000 850000
这背后的逻辑是,具有相同MOL的SIN应该在下一个数据帧中通过','连接。
先按MOL
组聚合join
,然后按DataFrame.stack
组重塑,排序正确,转换为DataFrame并转置,最后在map
中平铺MultiIndex
:
df1 = df.groupby('MOL')['SIN'].agg(lambda x: ','.join(x.astype(str))).reset_index()
df2 = df1.stack().sort_index(level=[1, 0], ascending=[False, True]).to_frame().T
df2.columns = df2.columns.map(lambda x: f'{x[1]}{x[0] + 1}')
print (df2)
SIN1 SIN2 MOL1 MOL2
0 339940,322291 321234 250000 850000