【问题标题】:Rename several columns with year labels without repeating logic用年份标签重命名几列而不重复逻辑
【发布时间】:2018-10-02 08:40:49
【问题描述】:

我的数据框中有几个未命名的列,除了一个数字。在这种情况下,列编号为 50 到 59。我想用年份标签重命名列,即第 50 列将重命名为“2006”,第 51 列重命名为“2007”,依此类推。

我有以下代码来重命名列,这很有效,但就我必须输入的数量而言,它似乎过于重复:

GDP.rename(columns={50:'2006', 51:'2007', 52:'2008', 53:'2009',54:'2010', 55:'2011', 56:'2012', 57:'2013', 58:'2014', 59:'2015'}, inplace=True)

有没有办法以不那么冗长的方式使用.rename() 方法

我觉得我应该能够将一系列列,例如 [49:60] 和一系列年份 [2006:2015] 传递到 .rename() 方法中以达到相同的结果。

【问题讨论】:

    标签: python pandas dictionary dataframe rename


    【解决方案1】:

    是的,您有几个选择。

    选项 1

    使用字典理解:

    GDP.rename(columns={i: str(1956+i) for i in range(50, 60)}, inplace=True)
    

    选项 2

    使用自定义函数。这可以是匿名的lambda

    GDP.rename(columns=lambda x: str(1956+x) if isinstance(x, int) else x, inplace=True)
    

    【讨论】:

    • 谢谢。 lambda 选项是我想要的,因为这是我在数据科学课程中学习的内容。然而,字典理解对我来说是更容易理解的选择,因为在使用 lambdas 时我仍然是绿色的。使用我的具体示例,如何在 lambda 中构造自定义函数?也就是说,“x”中有什么?
    • 或者,等一下。 . .你是说'x'是那个lambda中的函数吗? IE。查找为整数的列名,然后将它们更改为字符串,其中将 1956 添加到列名中的每个整数,从而产生正确的年份标签?
    • 没关系。我现在明白了。再次感谢您的快速响应和帮助!非常感谢,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2021-08-01
    • 2019-04-09
    • 1970-01-01
    • 2015-05-29
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多