【问题标题】:Change column names in python pandas using list comprehension使用列表理解更改 python pandas 中的列名
【发布时间】:2020-08-18 11:17:54
【问题描述】:

我目前正在尝试更改以下列名称:

Unnamed: 1 | Unnamed: 2         <----- Column names
    Alfa       Beta             <----- Data 

进入:

 2016 | 2017
 Alfa   Beta

我用过:

df.rename(columns=lambda x: re.sub(r"Unnamed\:\s\d+"," ",x))

用空格替换列名,但我想创建一个循环,以便自动替换为 2016 和 2017

[另外] 我这样做是为了创建值列表

for i in range(len(df.columns[:])):
    i+=2016
    str(i)

结果给出:

2016
2017

是否有任何方法可以将这些值替换为列表理解?

【问题讨论】:

标签: python regex pandas list-comprehension


【解决方案1】:
df.rename(columns=lambda x: int(x.strip('Unnamed: '))+2015)

【讨论】:

    【解决方案2】:

    我认为这里的列表理解不是必需的,只分配 range 并从变量开始:

    start = 2016
    df.columns = range(start, start + len(df.columns))
    print (df)
       2016  2017
    0  Alfa  Beta
    

    【讨论】:

      【解决方案3】:

      陷入这个困境,按照 OP 对列表理解的要求去做:

      df.columns = [re.sub(r'Unnamed: [12]', lambda x: str(int(x.group(0).strip('Unnamed: '))+2015), item) for item in df.columns]
      

      我知道这是一个非常长的单行,但 OP 要求它,但同意其他人的观点,除非 df 包含很多列,否则手动操作是可行的方法。 lambda 函数部分应该是一个独立的函数,这将为更高级的操作提供更大的灵活性。

      这一行可以改变下面的标题:

          col1    Unnamed: 1  col3    Unnamed: 2
      0    1        Alfa        3       Beta
      

      到:

        col1  2016    col3    2017
      0   1   Alfa     3      Beta
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-15
        • 2018-01-10
        • 2019-04-15
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2017-12-03
        • 2019-12-26
        相关资源
        最近更新 更多