kuyoro 2022-04-09 22:59 采纳率: 90.5%
浏览 100
已结题

python pandas如果同时改变多列位置

有a表和b表,a表有n列(n>10),b表有5列。
通过pandas的merge on 方法,将b表中4列字段加到a表最后,但根据业务需求,这4个字段需要展示在a表2345列。
网上查到改变列位置的方法:

mid=df['备注']   # 取备注列的值
df.pop('备注')  # 删除备注列
df.insert(4,'备注',mid) # 插入备注列

但这是一列列改变的,实际需要改变4列,有没有高效的方法同时移动多列到某个位置呢?

  • 写回答

2条回答 默认 最新

  • CSDN专家-HGJ 2022-04-09 23:47
    关注

    可以用列名列表切片方法一次替换。示例代码如下:

    import pandas as pd
    
    df0=pd.DataFrame([['A','1月',1,100],['B','1月',2,300],['C','1月',3,200],['D','1月',2,400]],columns=['产品','月份','销量','销售额'])
    df1=pd.DataFrame({'x':[1,2,3],'y':[2,3,4],'z':[11,22,33],'w':[101,202,303]})
    df=pd.merge(df0,df1,how='left',left_index=True,right_index=True)
    cols=df.columns.tolist()
    df=df[cols[:2]+cols[-len(df1.columns):]+cols[2:-len(df1.columns)]]
    print(df)
    
    

    df1列整体移动的运行结果:

    产品  月份    x    y     z      w  销量  销售额
    0  A  11.0  2.0  11.0  101.0   1  100
    1  B  12.0  3.0  22.0  202.0   2  300
    2  C  13.0  4.0  33.0  303.0   3  200
    3  D  1NaN  NaN   NaN    NaN   2  400
    

    如有帮助,请点采纳按钮。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月11日
  • 已采纳回答 4月10日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求