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

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 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)