Pandas如何交换或重新排序列

2024-09-29 19:21:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在python pandas中有交换列顺序的方法。 假设我有一个示例数据集:

import pandas as pd    
employee = {'EmployeeID' : [0,1,2],
     'FirstName' : ['a','b','c'],
     'LastName' : ['a','b','c'],
     'MiddleName' : ['a','b', None],
     'Contact' : ['(M) 133-245-3123', '(F)a123@gmail.com', '(F)312-533-2442 jimmy234@gmail.com']}

df = pd.DataFrame(employee)

一个基本的方法是:

neworder = ['EmployeeID','FirstName','MiddleName','LastName','Contact']
df=df.reindex(columns=neworder)

但是,如您所见,我只想交换两列。这是可行的,因为只有4列,但如果我有大约100列呢?交换或重新排序列的有效方法是什么?

可能有两种情况:

  1. 当你只想交换两列时。
  2. 当您想要重新排序3列时。(我非常确定,这个案例可以应用于3列以上。)

谢谢你们。


Tags: 方法com示例pandasdf顺序employeecontact
2条回答

两列交换

cols = list(df.columns)
a, b = cols.index('LastName'), cols.index('MiddleName')
cols[b], cols[a] = cols[a], cols[b]
df = df[cols]

重新排序列交换(2个交换)

cols = list(df.columns)
a, b, c, d = cols.index('LastName'), cols.index('MiddleName'), cols.index('Contact'), cols.index('EmployeeID')
cols[a], cols[b], cols[c], cols[d] = cols[b], cols[a], cols[d], cols[c]
df = df[cols]

交换多个

现在我们来谈谈如何处理列表片段-

cols = list(df.columns)
cols = cols[1::2] + cols[::2]
df = df[cols]

假设您当前的列顺序是[b,c,d,a],并且您想将其排序为[a,b,c,d],您可以这样做:

new_df = old_df[['a', 'b', 'c', 'd']]

相关问题 更多 >

    热门问题