python - 创建函数以重命名 Pandas 数据框中的列

标签 python pandas function dataframe rename

我有如下数据框:

df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})

我尝试创建一个允许动态更改列名的函数,我可以在函数中输入旧列名和新列名,如下所示:

def rename_column_name(df, old_column, new_column):
    df = df.rename({'{}'.format(old_column) : '{}'.format(new_column)}, axis=1)
    return df

此功能仅在我只有一个输入时适用,如下所示:

new_df = rename_column_name(df, '$a' , 'a')

给我这个 new_df 如下:

new_df = pd.DataFrame({'a':[1,2], '$b': [10,20]})

但是,我想创建一个函数,允许我根据自己的喜好对多个/一个列进行更改:

new_df = rename_column_name(df, ['$a','$b'] , ['a','b'])

然后得到如下的new_df

new_df = pd.DataFrame({'a':[1,2], 'b': [10,20]})

那么,如何让我的函数更具动态性,让我可以自由输入多个/一个列名称并重命名它们?

最佳答案

你不需要一个函数,你可以使用dict comprehension来做到这一点:

In [265]: old_names = df.columns.tolist()                                                                                                                                                                   

In [266]: new_names = ['a','b']                                                                                                                                                                             

In [268]: df = df.rename(columns=dict(zip(old_names, new_names)))                                                                                                                                  

In [269]: df                                                                                                                                                                                                
Out[269]: 
   a   b
0  1  10
1  2  20

OP需要的功能:

In [274]: def rename_column_name(df, old_column_list, new_column_list): 
     ...:     df = df.rename(columns=dict(zip(old_column_list, new_column_list))) 
     ...:     return df 
     ...:                                                                                                                                                                                                   

In [275]: rename_column_name(df,old_names,new_names)                                                                                                                                                        
Out[275]: 
   a   b
0  1  10
1  2  20

您需要将列的列表 传递给此函数。它可以是多列或单列。这应该可以满足您的需求。

关于python - 创建函数以重命名 Pandas 数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61789700/

相关文章:

python - 我可以在 Python 2.5 中使用哪个 JSON 模块?

python - Pandas DataFrame 通过匹配另一个 Pandas Series 的多列索引来更新和求和

python - 如何向 matplotlib.pyplot.matshow 绘图添加标签和标题

jquery - 等待其他函数中的动画完成

c - 结构部分作为参数 : unknown type name

python - 端口已被使用

python - 将项目附加到 Pandas Dataframe 以使其表现得像打印语句

python - pytest 固定装置和线程同步

python - 类型错误 : float() argument must be a string or a number, 而不是 'Timestamp'

ios - 在所有 viewDidLoad 函数中重复相同的语句可能的扩展文件