Pandas:如何在保留列标签顺序不变的情况下交换列内容?
最简单的两列内容交换方法
嘿,别纠结numpy那些复杂操作啦!针对你的需求,有个超直观又简单的办法,完全不用碰高级切片或者数组转换,直接用pandas的列赋值就能搞定。
你只需要一行代码,就能交换B和C列的内容,同时完全保留列标签的顺序:
df['B'], df['C'] = df['C'], df['B']
原理说明
这其实是利用了Python的元组解包特性——先把C列的值暂存,再把B列的值赋给C,最后把暂存的C值赋给B,一步完成交换,而且完全不会改变列的排列顺序,完美匹配你的要求。
如果不想修改原始DataFrame(避免影响后续操作),可以先复制一份再操作:
df_swapped = df.copy() df_swapped['B'], df_swapped['C'] = df_swapped['C'], df_swapped['B']
验证结果
运行上面的代码后,你的DataFrame就会变成你想要的样子:
A B C
0 1 9 5
1 2 10 6
2 3 11 7
3 4 12 8
之前你尝试的pd.DataFrame.values和numpy切片其实是绕了弯路,这个方法对新手来说最容易理解和上手,完全适配你使用的pandas v0.25.3版本哦!
内容的提问来源于stack exchange,提问作者capnahab
相关产品推荐
相关产品推荐

