python - 如何通过将现有列的一些列组合在一起来创建新的数据框?
问题描述
我有一个数据框 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
解决方案
您可以使用 和 lambda 函数按列聚合以进行拆分,并使用和axis=1
选择第一个值: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 8
推荐阅读
- python - 将 UUIDField 转换为 CharField
- javascript - 为什么光滑的滑块不适用于标签?
- java - java - HttpClient 不使用 NTLM 进行身份验证
- angular - 实现 OnInit 类的目的是什么,删除 ngOnInit 可以正常工作?
- r - 从古腾堡检索西班牙语书籍
- c# - 如何使用输入参数在 azure data factory 中运行 exe 文件?
- javascript - Fetching the selected options html from select box
- android - 动态创建的数据未插入全局范围 Arraylist 数据变量
- c# - 字符串格式和格式化字符串
- html - CSS滑动缩放效果与重叠元素