我有一个数据帧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发布于 2020-10-07 18:51:37
可以使用用于拆分的axis=1和lambda函数按列聚合,使用max和DataFrame.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 8https://stackoverflow.com/questions/64242508
复制相似问题