熊猫MultiIndex更改顺序仅一级

时间:2019-02-22 23:23:24

标签: python pandas dataframe multi-index

我有一个带有多索引列的数据框:

 |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

请帮助

非常感谢

3 个答案:

答案 0 :(得分:3)

假设它们具有相同的标签,则可以将reindexlevel=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