有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列,有没有高效的方法同时移动多列到某个位置呢?
有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列,有没有高效的方法同时移动多列到某个位置呢?
可以用列名列表切片方法一次替换。示例代码如下:
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 1月 1.0 2.0 11.0 101.0 1 100
1 B 1月 2.0 3.0 22.0 202.0 2 300
2 C 1月 3.0 4.0 33.0 303.0 3 200
3 D 1月 NaN NaN NaN NaN 2 400
如有帮助,请点采纳按钮。