python - 如何将同一列中的列附加到以相似名称结尾的不同行中
问题描述
我想转换如下所示的数据框:
time | 0.id | 0.a | 0.b | 1.id | 1.a | 1.b |...
00:00| abc | 0a | 0b | bcd | 1a | 1b |...
到以下:
time | id | a | b |...
00:00 | abc | 0a | 0b|...
00:00 | bcd | 1a | 1b|...
我正在使用 python,数据框是 pandas 数据框。
解决方案
这是wide_to_long
在翻转列名之后,所以stubnames
是正确的。
df.columns = ['_'.join(x[::-1]) for x in df.columns.str.split('.')]
stubs = pd.unique([x[0] for x in df.columns.str.split('_') if x[0] != 'time'])
pd.wide_to_long(df, i='time', stubnames=stubs, sep='_', j='num').reset_index(1, drop=True)
# id a b
#time
#00:00 abc 0a 0b
#00:00 bcd 1a 1b
推荐阅读
- c# - 无法从 Blazor 应用程序中的 Register.cshtml.cs 执行 SQL Server 存储过程
- swift - 如何在 SwiftUI 中以编程方式显示工作表?
- c - 从文件(指针)中获取数据时,如何构建将数据存储在结构中的函数?
- webgl - 我在以下 WebGL 代码中做错了什么?
- html - 如何在贴在顶部的导航栏和贴在底部的页脚之间拉伸 div 高度?
- julia - Julia gui 显示图像 gtk.jl
- ios - ios WKWebView拦截http/https请求
- c# - 为什么Regex的Matches功能这么快?
- python - 找到两个向量和它们之间的角度
- ios - 我想使用 alamofire swift 5 将图像上传到多部分表单数据