我有一个带有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)
这似乎非常令人费解。有没有更简单的方法?