【问题标题】:Pandas: Rename single DataFrame column without knowing column namePandas:在不知道列名的情况下重命名单个 DataFrame 列
【发布时间】:2014-12-07 19:08:08
【问题描述】:

我知道我可以重命名单个 pandas.DataFrame 列:

drugInfo.rename(columns = {'col_1': 'col_1_new_name'}, inplace = True)

但我想在不知道其名称的情况下重命名一列(基于它的索引 - 尽管我知道字典没有它)。我想像这样重命名第 1 列:

drugInfo.rename(columns = {1: 'col_1_new_name'}, inplace = True)

但在 DataFrame.columns 字典中没有“1”条目,因此没有进行重命名。我怎样才能做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    应该有效:

    drugInfo.rename(columns = {list(drugInfo)[1]: 'col_1_new_name'}, inplace = True)
    

    例子:

    In [18]:
    
    df = pd.DataFrame({'a':randn(5), 'b':randn(5), 'c':randn(5)})
    df
    Out[18]:
              a         b         c
    0 -1.429509 -0.652116  0.515545
    1  0.563148 -0.536554 -1.316155
    2  1.310768 -3.041681 -0.704776
    3 -1.403204  1.083727 -0.117787
    4 -0.040952  0.108155 -0.092292
    In [19]:
    
    df.rename(columns={list(df)[1]:'col1_new_name'}, inplace=True)
    df
    Out[19]:
              a  col1_new_name         c
    0 -1.429509      -0.652116  0.515545
    1  0.563148      -0.536554 -1.316155
    2  1.310768      -3.041681 -0.704776
    3 -1.403204       1.083727 -0.117787
    4 -0.040952       0.108155 -0.092292
    

    索引到数据框列属性可能更具可读性:

    df.rename(columns={df.columns[1]:'col1_new_name'}, inplace=True)
    

    所以对你来说:

    drugInfo.rename(columns = {drugInfo.columns[1]: 'col_1_new_name'}, inplace = True)
    

    【讨论】:

    • 谢谢,这对我有用,无论该列是命名的还是无名的,这正是我所需要的。
    猜你喜欢
    • 2017-12-23
    • 2021-04-24
    • 2019-07-21
    • 2021-07-15
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2013-07-26
    相关资源
    最近更新 更多