【发布时间】:2021-05-23 19:15:30
【问题描述】:
我对 Python 和 Pandas 很陌生。到目前为止尝试在论坛上找到答案,但没有成功。
我的问题如下:
- 我从 excel 导入一个数据框,其中 2 列包含参数描述(字符串),可变数量的列包含 每周数据(4 到 5 取决于一个月中的周数;01. mm.yyyy 到(比如说)28.mm.yyyy)以及具有每月数据的列(01.mm.yyyy)
- 我需要将每月数据的前 2 个字符(因此,从第 6 列或第 7 列开始)列名字符串从 01 重命名为(比如说)25
例如:
| Col1 | Col2 | Wk 1- Wk 4 | 01.01.2021 | 01.02.2021 | ... |
|---|---|---|---|---|---|
| 1111 | 2222 | .......... | .......... | .......... | ... |
我想得到以下:
| Col1 | Col2 | Wk 1- Wk 4 | 25.01.2021 | 25.02.2021 | ... |
|---|---|---|---|---|---|
| 1111 | 2222 | .......... | .......... | .......... | ... |
我尝试通过使用 df.columns 处理列索引范围来解决它,如下代码:
df.columns[m3_idx:] = df.columns[m3_idx:].str.replace("^01", "25")
其中m3_idx 是列的索引,重命名应该从这里开始。但我得到一个 TypeError:
Exception has occurred: TypeError
Index does not support mutable operations
如何处理列索引以指定要更改标题的列范围?
编辑:想法是仅更改列范围的一部分的标题,因为每月数据之前的某些“每周数据”列可能以相同的字符串“01”开头,这不能改变
【问题讨论】:
-
你可以试试
df.columns = df.columns[:m3_idx].tolist() + df.columns[m3_idx:].str.replace('^01', '25').tolist() -
@ShubhamSharma:现在试过了,仍然出现同样的错误。看来,df.columns 不能接受列范围的一部分作为要处理的切片。
标签: python-3.x pandas rename