pandas - 对数据框进行转换
问题描述
df
我需要建议来转换 DataFrame
timestamp group v1 v2
0 11/14/2019 00:00:00 g1 0.00 1
1 11/14/2019 00:00:00 g2 0.00 2
到
timestamp new_group v
11/14/2019 00:00:00 g1_v1 0.00
11/14/2019 00:00:00 g1_v2 1
11/14/2019 00:00:00 g2_v1 0.00
11/14/2019 00:00:00 g2_v2 2
其逻辑是将其与 合并v1
,v2
然后将其作为一个新列v
,同时,创建一个新列new_group
,将原始group
值和原始列名称(v1
或v2
)作为其值。
解决方案
融化数据框,使用str cat将创建的新列合并为一个并过滤所需的列
res = (df
.melt(['timestamp','group'])
.assign(new_group = lambda x: x.group.str.cat(x.variable,sep="_"))
.filter(['timestamp','new_group','value'])
)
res
timestamp new_group value
0 11/14/2019 00:00:00 g1_v1 0.0
1 11/14/2019 00:00:00 g2_v1 0.0
2 11/14/2019 00:00:00 g1_v2 1.0
3 11/14/2019 00:00:00 g2_v2 2.0
推荐阅读
- c++ - 在 N*N 棋盘中,M 个象不能走多少个方格?
- javascript - 这个闭包中的外部函数变量和外部函数是什么?
- java - 从下面程序中的不同列表中删除公共元素的算法
- wordpress - 可能的 woocommce 错误在元框“自定义字段”添加/编辑产品页面中一直显示“total_sales”?
- visual-studio - 调试 UWP .NET 应用程序:MyApp.exe 中 0x79A1CFAC (SharedLibrary.dll) 处未处理的异常:0x00001007
- angular - 如何读取上传的excel文件并以角度转换为json
- github - 将 Github 上的 IPython Notebooks 变成博客的最佳方式是什么?
- c++ - C++ getline - 使用正则表达式提取子字符串
- javascript - Fabric-js 模式:如何根据缩放和模糊矩形从没有大小的矩形创建画布背景图案
- spring-boot - 用更高版本覆盖 Spring Boot BOM 策划的依赖项