首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过将已有的一些列组合在一起来创建新的数据帧?

如何通过将已有的一些列组合在一起来创建新的数据帧?
EN

Stack Overflow用户
提问于 2020-10-07 18:50:19
回答 2查看 44关注 0票数 1

我有一个数据帧df,如下所示:

代码语言:javascript
复制
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,没有子组,并为每一行选择子组中的最大数量,并且对于任何新的修改或增加组或子组都是灵活的。

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-07 18:51:37

可以使用用于拆分的axis=1和lambda函数按列聚合,使用maxDataFrame.groupby选择第一个值

如果组的数量包含2位或更多位,则此工作正常。

代码语言:javascript
复制
df1 = df.groupby(lambda x: x.split('-')[0], axis=1).max()

另一种方法是传递拆分的列名:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-10-07 18:58:58

您可以在此处使用.str[].str.get

代码语言:javascript
复制
df.groupby(df.columns.str[0], axis=1).max())

    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64242508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档