如何从数据框中的所有列名称/标题中删除数字

问题描述 投票:0回答:4

嗨,所以我有一个数据框,其列名称以“2018”结尾

我需要从这些列名称中删除年份,但遇到了一些麻烦。我还需要从这些列名称中删除前导和尾随空格。

我已经尝试过以下方法:

df.columns.str.replace('\d+',"") #to try and remove the numbers from the column names

df.columns = df.columns.str.strip('') #to try and get rid of the spaces

这些对数据框没有任何作用。

我希望列名称从“Stock 2018”变为“Stock”

但这并没有发生。谢谢您的帮助!

python pandas iteration renaming
4个回答
2
投票

您也可以尝试使用正则表达式..

示例数据框:

>>> df = pd.DataFrame.from_dict({'Name04': ['Chris', 'Joe', 'Karn', 'Alina'], 'Age04': [14, 16, 18, 21], 'Weight04': [15, 21, 37, 45]})                                 

>>> df
   Age04 Name04  Weight04
0     14  Chris        15
1     16    Joe        21
2     18   Karn        37
3     21  Alina        45

使用
regex
的结果:

>>> df.columns = df.columns.str.replace(r'\d+', '')
>>> df
   Age   Name  Weight
0   14  Chris      15
1   16    Joe      21
2   18   Karn      37
3   21  Alina      45

0
投票

您只需要分配给

df.columns
来删除数字,也不要将任何内容传递给
str.strip()
来删除前导/尾随空白字符。

df.columns=df.columns.str.replace('\d+','').str.strip()

0
投票

不确定为什么,但从更新新的熊猫(大约与更新我的操作系统和整个计算机的时间)开始,卡恩接受的答案对我不起作用。我必须提供参数 regex=True。所以:

df.columns = df.columns.str.replace('\d+', '', regex=True)

-1
投票

您没有使用正确的方式重命名 pandas 中的列:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html

从文档来看,您似乎可以简单地执行以下操作:

df = df.rename(str.replace('\d+',""), axis='columns')

让我知道这是否适合您。

© www.soinside.com 2019 - 2024. All rights reserved.