【问题标题】:How to change dataframe column names without changing the values? [duplicate]如何在不更改值的情况下更改数据框列名? [复制]
【发布时间】:2020-08-05 00:21:07
【问题描述】:

我有一堆作为数据帧读取的 CSV 文件。对于每个数据框,如果数据框中存在特定列,我想更改一些列名称:

column_name_update_map = {'aa': 'xx'; 'bb': 'yy'}

在这样的地图中,如果数据框中存在“aa”或“bb”,我想将 aa 更改为 xx,将“bb”更改为“yy”。不应更改任何值。

  for file in files:
        print('Current file: ', file)
        df = pd.read_csv(file, sep='\t')
        df = df.replace(np.nan, '', regex=True)
        for index, row in df.iterrows(): 

           pass

我认为我不应该使用内部循环,但如果必须这样做,仅更改列名的正确方法是什么?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以在数据框中使用rename

    column_name_update_map = {'aa': 'xx', 'bb': 'yy'}
    df = df.rename(columns=column_name_update_map) 
    

    【讨论】:

    • 不,'aa'和'bb'只是两列,不是df中的所有列。这还能用吗?
    • 阿比盖尔您的问题需要进一步澄清。请提及您要更改的列名。如果您正在寻找未命名的列 '' 到 'NaN',那么您可以在 replace() 映射中选择它。
    • 是的,字典键是旧的列名,值是新的列名。
    • 我的意思是如果df中有8列,我只需要更改其中的2列。这还有效吗?
    • 它有效。您必须选择参数“inplace=True”。只需尝试代码。
    【解决方案2】:

    要重命名特定列,请遵循此代码。

    代码:

    import pandas as pd
    import numpy as np
    
    #creating sample dataframe 
    df=pd.DataFrame({'aa':[1, 2], 'bb':[3, 4], 'c':[5, 6], '':[7, 8]})
    
    #replace columns 'aa' to 'xx', 'bb'  to 'yy' and '' to 'NaN'
    df.rename(columns={'aa':'xx', 'bb':'yy', '':np.nan}, inplace=True)
    #display resulting dataframe
    print(df)
    

    我希望它会有所帮助。

    【讨论】:

    • replace() 得到了一个意外的关键字参数“列”
    • 对不起,它是 rename() 函数。
    • 有效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多