在数据框中向上折叠/合并/上移列

时间:2018-07-26 18:26:18

标签: python pandas

对不起,我是新来的发布问题的人,我看过一些python文档,但是找不到groupby,melt,merge等所需的内容。
我在python中有以下带有3列(函数,请求,响应)的数据框:

function    request         response
status      {Status: CALCULATING}   
status      {Status: CALCULATED}    
status      {Status: NONE}  
temperature                 {60}
temperature {Front} 
temperature                 {60}
temperature {Front} 
temperature                 {59}
temperature {Rear}  
temperature                 {59}
temperature {Rear}  

我想向上“折叠”行,以便数据框如下所示:

function    request             response
status      {Status: CALCULATING}   
status      {Status: CALCULATED}    
status      {Status: NONE}  
temperature {Front}             {60}
temperature {Front}             {60}
temperature {Rear}              {59}
temperature {Rear}              {59}

有人可以帮我吗?另外,很抱歉很难阅读表格。当我从excel输出文件复制并粘贴时,我不知道如何正确发布表格。谢谢!

1 个答案:

答案 0 :(得分:0)

有点丑陋,但是您可以按function对数据帧进行分组,如果function == 'temperature'可以进行shift-concat-skip跳过,否则保持数据不变。

df.groupby('function').apply(
   lambda x: x['request response'].str.cat(x['request response'].shift(), ' ')[1::2] 
             if all(x['function'] == 'temperature') else x['request response']
).reset_index(level=1, drop=True).reset_index()
# outputs:
      function       request response
0       status  {Status: CALCULATING}
1       status   {Status: CALCULATED}
2       status         {Status: NONE}
3  temperature           {Front} {60}
4  temperature           {Front} {60}
5  temperature            {Rear} {59}
6  temperature            {Rear} {59}