首页 > 解决方案 > 对数据框进行转换

问题描述

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

其逻辑是将其与 合并v1v2然后将其作为一个新列v,同时,创建一个新列new_group,将原始group值和原始列名称(v1v2)作为其值。

标签: pandas

解决方案


融化数据框,使用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

推荐阅读