使用基于新系列和现有列的格式在具有MultiIndex列的DataFrame中构建新的字符串列

时间:2019-07-04 04:55:59

标签: python pandas series

我有一个带有MultiIndex列的DataFrame:

 // app code
 const type = `video/${codec}`;

 const data = new FormData();
   data.append("video", {
   name: "mobile-video-upload",
   type,
   uri
 });

  axios.post('http://localhost:4000/api/upload', 
    data2).then(success => {
      console.log(success, 'success');
    }).catch(error => {
      console.log(error, 'error');
    })

// server code

  {
    method: 'POST',
    path: '/api/upload',
    config: {
      payload: {
        maxBytes: 209715200,
        output: 'stream',
        parse: true
      }
    },
    handler: handlers.uploadQuestion,
  }

on my app error is Error: Request failed with status code 413

on my server error is Parse error, stack: Error: Parse error at socketOnEnd (_http_server.js:456:20) at Socket.emit (events) at endReadableNT(_stream_readable.js) at process._tickCallback(internal/process/next_tick.js)

现在,我想插入一个新的1级条目。如果涉及包含现有列的表达式,则可以这样:

import pandas as pd
df = pd.DataFrame({('par1','a'):[1,5],('par1','b'):[2,6],
                       ('par1','c'):[3,7],('par1','d'):[4,8]})
df

par1
    a   b   c   d
0   1   2   3   4
1   5   6   7   8

现在我有一个df[('par1','a+c')] = df[('par1','a')] + df[('par1','c')] df par1 a b c d a+c 0 1 2 3 4 4 1 5 6 7 8 12 系列,其中包含计算值(与df具有相同的行索引):

s1

我想创建一个新的字符串列s1 = pd.Series([3,7]) ,其中每一行都是从该系列的元素逐个组合构建的,例如{{1}中的列string }声明

我发现这样做的唯一方法是首先将Series ('par1','a+c')作为新列插入表中:

format

然后,使用整数作为列索引,按行用lambda函数构建新字符串:

s1

最后,删除列df[('par1','s1')] = s1

df[('par1','string')] = df.apply(lambda row: '{} out of {}'.format(row[0],row[4]),axis=1)

这似乎非常令人费解。有没有更简单的方法?

0 个答案:

没有答案