繁体   English   中英

使用列表理解更改 python pandas 中的列名

[英]Change column names in python pandas using list comprehension

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

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

有什么方法可以将这些值替换为列表理解吗?

df.rename(columns=lambda x: int(x.strip('Unnamed: '))+2015)

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

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

陷入这个困境,按照 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 要求它,但同意其他人,手动执行是 go 的方式,除非 df 很大,有很多列。 lambda function 部分应该是一个独立的 function 部分,这将为更高级的操作提供更大的灵活性。

这一行可以在 header 以下更改:

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

至:

  col1  2016    col3    2017
0   1   Alfa     3      Beta

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM