在 python 中分组并打印数据框中的最大值

grouping and printing the maximum in a dataframe in python

一个数据框有 3 列

    A                   B          C      
^0hand(%s)leg$        27;30       42;54
^-(%s)hand0leg        39;30       47;57
^0hand(%s)leg$        24;33       39;54

所以 A 列具有这样的正则表达式模式,如果这些模式相似,例如现在第 1 行和第 3 行相似,所以它必须合并两行并仅输出最大值,如下所示:

输出:

 A                   B          C      
^0hand(%s)leg$        27;33       42;54
^-(%s)hand0leg        39;30       47;57

任何线索都会有帮助

您可以使用:

(df.set_index('A').stack()
   .str.extract('(\d+);(\d+)').astype(int)
   .groupby(level=[0,1]).agg(max).astype(str)
   .assign(s=lambda d: d[0]+';'+d[1])['s']    # OR # .apply(';'.join, axis=1)
   .unstack(1)
   .loc[df['A'].unique()]  ## only if the order of rows matters
   .reset_index()
)

输出:

                A      B      C
0  ^0hand(%s)leg$  27;33  42;54
1  ^-(%s)hand0leg  39;30  47;57