pandas dataframe 列名:删除特殊字符
pandas dataframe column name: remove special character
一些小丑制作了一个 Lotus database/applet 东西来跟踪我们公司的工程问题。开玩笑的是,关键信息是用一个特殊字符命名的……一个数字符号(哈希标记、井号、\u0023)。
缩略样本:
KA# Issue Date Current Position
27144 1/9/2014 Accounting
27194 12/20/2012 Engineering
32474 4/21/2008 Engineering
32623-HOLD 4/25/2016 Engineering
32745 11/13/2012 SEPE
32812 10/30/2013 Engineering
32817 12/7/2012 Purchasing
32839 1/8/2013 SEPE
我将此 table(4K 行,15 列)输出到 csv 文件并在 python3 中作为 pandas 数据帧进行处理。
我生成各种输出。如果我使用类似的东西:
df.iloc[:,[0,3,1,8,9,10]]
我得到了适当的输出,键列显示为 "KA#"
。 (当我说 "key column" 时,我的意思是 "most important"... 不是 "index"。我保留了一个序列索引)
不幸的是,人们有时会在我导出到 csv 之间弄乱 Lotus 中的列顺序,因此我不能保证 "KA#"
将是任何特定的列号。我想使用列名:
df.loc[:,["KA#","Issue Date","Current Position"]]
但是 "KA#"
列中填满了 NaN。
感谢您提供的任何帮助。
最后,如果我尝试将 "KA#"
重命名为 "KA"
:
df['KA#'].name = 'KA'
抛出 KeyError 并且
df = df.rename(columns={"KA#": "ka"})
被完全忽略。该列显示为 "KA#"
.
谁能想出摆脱或处理该符号的方法?此时我什至会接受正则表达式。
使用str.replace:
df.columns=df.columns.str.replace('#','')
您可以在 documentation 中查看。
相反,我们可以使用 lambda 函数删除列中的特殊字符,例如:
df2 = df1.rename(columns=lambda x: x.strip('*'))
一些小丑制作了一个 Lotus database/applet 东西来跟踪我们公司的工程问题。开玩笑的是,关键信息是用一个特殊字符命名的……一个数字符号(哈希标记、井号、\u0023)。
缩略样本:
KA# Issue Date Current Position
27144 1/9/2014 Accounting
27194 12/20/2012 Engineering
32474 4/21/2008 Engineering
32623-HOLD 4/25/2016 Engineering
32745 11/13/2012 SEPE
32812 10/30/2013 Engineering
32817 12/7/2012 Purchasing
32839 1/8/2013 SEPE
我将此 table(4K 行,15 列)输出到 csv 文件并在 python3 中作为 pandas 数据帧进行处理。
我生成各种输出。如果我使用类似的东西:
df.iloc[:,[0,3,1,8,9,10]]
我得到了适当的输出,键列显示为 "KA#"
。 (当我说 "key column" 时,我的意思是 "most important"... 不是 "index"。我保留了一个序列索引)
不幸的是,人们有时会在我导出到 csv 之间弄乱 Lotus 中的列顺序,因此我不能保证 "KA#"
将是任何特定的列号。我想使用列名:
df.loc[:,["KA#","Issue Date","Current Position"]]
但是 "KA#"
列中填满了 NaN。
感谢您提供的任何帮助。
最后,如果我尝试将 "KA#"
重命名为 "KA"
:
df['KA#'].name = 'KA'
抛出 KeyError 并且
df = df.rename(columns={"KA#": "ka"})
被完全忽略。该列显示为 "KA#"
.
谁能想出摆脱或处理该符号的方法?此时我什至会接受正则表达式。
使用str.replace:
df.columns=df.columns.str.replace('#','')
您可以在 documentation 中查看。
相反,我们可以使用 lambda 函数删除列中的特殊字符,例如:
df2 = df1.rename(columns=lambda x: x.strip('*'))