我有一个带有多索引列的数据框:
|A |B
|1 |2 |1 |2
0|a b c d
我想交换一级以获得:
|A |B
|2 |1 |2 |1
0|b |a |d |c
但是
df.sort_index(axis=1, level=1)
我得到:
|A|B|A|B
|1|1|2|2
0|a|c|b|d
请帮助
非常感谢
答案 0 :(得分:3)
假设它们具有相同的标签,则可以将reindex
与level=1
一起使用:
df
A B
1 2 1 2
0 a b c d
df.reindex([2, 1], level=1, axis=1)
A B
2 1 2 1
0 b a d c
概括地说,您可以访问MultiIndex.levels
:
df.reindex(df.columns.levels[1][::-1], level=1, axis=1)
A B
2 1 2 1
0 b a d c
如果所有第一级标签的第二级值都不相同,请使用
df.loc[:, ::-1].reindex(df.columns.levels[0], level=0, axis=1)
A B
2 1 2 1
0 b a d c
答案 1 :(得分:2)
您尝试过吗:
df.loc[:, pd.IndexSlice[:, [2, 1]]]
?
答案 2 :(得分:2)
您仍然可以使用//app.js file
var dashboardfunc = require('./models/admindashboard');
app.get("/dashboard/:id?", function(req, res) {
console.log("we are here in dashboard")
var data = {id: req.params.id};
console.log(data)
dashboardfunc.productlist().then(function(results){
console.log("i am here now ....")
console.log(results)
}).catch(function(err){
if(err){
console.log(err)
}
})
});
//admindashboard.js file
//I tried many other alterations like using call back etc.
// i want the damn results to be back to the app.js and use that
//
function productlist(data) {
return new Promise(function(resolve, reject) {
var param = [data.id];
var sql = 'select * from product where seller_id=?';
console.log(param)
pool.query(sql, param, function(err, results) {
if (err) {
console.log(err)
}
else {
if (results === undefined) {
reject(new Error("Error rows is undefined"));
}
else {
console.log("we got here in productlist")
console.log(results)
return results;
}
}
})
})
}
module.exports = productlist;
sort_index