我只想交换pandas中的列名,最好是一行代码。另外一个问题是我有大约100列,这导致我无法重新分配所有列名,所以我想替换成对的选定列名。我不知道列的索引(会有所不同),所以我必须使用列名。在
我尝试了以下代码:
import pandas as pd
probes = {'Spam': [0.0,1.0],
'Ham': [1.0,0.0],
'PT011': [0.11,0.21],
'PT012': [0.12,0.22],
'PT021': [0.21,0.11],
'PT022': [0.22,0.12]}
df = pd.DataFrame(probes,columns= ['Spam','Ham','PT011', 'PT012','PT021','PT022'])
print("Before renaming:\n",df)
df.rename(columns={'PT011':'PT021', 'PT012':'PT022','PT021':'PT011','PT022':'PT012'}, inplace=True)
print("After renaming:\n",df)
我得到了:
^{pr2}$但是我希望一些简单的一行程序可以工作,允许交换列名,而不必定义要交换的两对列名,而是只定义一对列名,保留数据,具有某些loc或iloc属性,例如:
df['PT011','PT012']=df['PT021','PT022']
预期产量(也需要拟定订单):
Spam Ham PT011 PT012 PT021 PT022
0 0.0 1.0 0.21 0.22 0.11 0.12
1 1.0 0.0 0.11 0.12 0.21 0.22
答案显示在: Renaming columns in pandas,例如:
df.columns = df.columns.str.replace('PT011','PT021')
不适合我的情况,因为它仍然需要同时提供两对列名,或者需要重新分配所有列的名称,并且没有给出所需的列顺序。在
我在pandas文档中:Indexing and selecting data我找到了一种简单易行的方法:
按所需顺序输出:
^{pr2}$如果你有一个字典,你可以用来地图的东西,那么这个工作很好。在
或者您可以使用
^{pr2}$rename()
来更安全。在我不知道你说你不想给它取两个名字来翻的时候是什么意思。否则你会知道如何交换哪些列?在
至于你的后续问题:
相关问题 更多 >
编程相关推荐