我可以使用我在 stackoverflow 上找到的以下代码更改列的顺序,现在我试图将其转换为常规使用的函数,但它似乎没有做任何事情。 Pycharm 说我的函数的最后一行没有使用局部变量 df_name 值。
工作代码
columnsPosition = list(df.columns)
F, H = columnsPosition.index('F'), columnsPosition.index('H')
columnsPosition[F], columnsPosition[H] = columnsPosition[H], columnsPosition[F]
df = df[columnsPosition]
我的功能 - 不起作用,需要让这个工作
def change_col_seq(df_name, old_col_position, new_col_position):
columnsPosition = list(df_name.columns)
F, H = columnsPosition.index(old_col_position), columnsPosition.index(new_col_position)
columnsPosition[F], columnsPosition[H] = columnsPosition[H], columnsPosition[F]
df_name = df_name[columnsPosition] # pycharm has issue on this line
我尝试在最后一个函数语句中添加 return ,但我无法让它工作。
答案 0 :(得分:2)
改变两列的位置:
def change_col_seq(df_name:pd.DataFrame, old_col_position:str, new_col_position:str):
df_name[new_col_position], df_name[old_col_position] = df_name[old_col_position].copy(), df_name[new_col_position].copy()
df = df_name.rename(columns={old_col_position:new_col_position, new_col_position:old_col_position})
return df
您可以使用 rename
方法 (Documentation)
如果您只想更改一列的名称:
def change_col_name(df_name, old_col_name:str, new_col_name:str):
df = df_name.rename(columns={old_col_name: new_col_name})
return df
如果要更改多个列的名称:
def change_col_name(df_name, old_col_name:list, new_col_name:list):
df = df_name.rename(columns=dict(zip(old_col_name, new_col_name)))
return df