首页 > 解决方案 > 如何通过将现有列的一些列组合在一起来创建新的数据框?

问题描述

我有一个数据框 df ,如图所示:

1-1    1-2    1-3    2-1    2-2    3-1    3-2    4-1    5-1
10      3      9      1     3       9      33     10     11
21      31     3      22    21      13     11     7      13
33      22     61     31    35      34     8      10     16
6       9      32     5      4      8      9      6      8

其中列的解释如下:

第一个数字是组号,第二个数字是它的一部分或子组,在我们的示例中,我们有组 1、2、3、4、5,组 1 由 1-1、1-2、1-3 组成。

我想创建一个新的数据框,其中只有组 1、2、3、4、5 没有子组,并为每一行选择子组中的最大数量,并且可以灵活地进行任何新的修改或增加组或子组。

我需要的新数据框如下所示:

1    2    3    4    5
10   3    33   10   11
31   22   13   7    13
61   35   34   10   16
32   5    9    6    8

标签: pythonpandasdataframe

解决方案


您可以使用 和 lambda 函数按列聚合以进行拆分,并使用和axis=1选择第一个值:maxDataFrame.groupby

如果组数包含 2 个或更多数字,则此工作正确。

df1 = df.groupby(lambda x: x.split('-')[0], axis=1).max()

替代方法是传递拆分列名称:

df1 = df.groupby(df.columns.str.split('-').str[0], axis=1).max()

print (df1)
    1   2   3   4   5
0  10   3  33  10  11
1  31  22  13   7  13
2  61  35  34  10  16
3  32   5   9   6   8

推荐阅读