pandas dataframe列名:删除特殊字符

Pau*_*ski 6 special-characters python-3.x pandas

一些小丑制作了一个Lotus数据库/ 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
Run Code Online (Sandbox Code Playgroud)

我将此表(4K行,15列)输出到csv文件,并在python3中作为pandas数据帧进行处理.

我生成各种输出.如果我使用类似的东西:

df.iloc[:,[0,3,1,8,9,10]]
Run Code Online (Sandbox Code Playgroud)

我获得了适当的输出,键列显示为"KA#".(当我说"关键列"时,我的意思是"最重要的"......不是"索引".我保留了一个串行索引)

不幸的是,人们有时会在我导出到csv之间弄乱Lotus中的列顺序,所以我无法保证"KA#"将是任何特定的列号.我想使用列名:

df.loc[:,["KA#","Issue Date","Current Position"]]
Run Code Online (Sandbox Code Playgroud)

但该"KA#"专栏充满了NaN's.

谢谢你尽你所能的帮助.

最后,如果我尝试重命名"KA#""KA":

df['KA#'].name = 'KA'
Run Code Online (Sandbox Code Playgroud)

抛出一个KeyError和

df = df.rename(columns={"KA#": "ka"})
Run Code Online (Sandbox Code Playgroud)

完全被忽略了.该列显示为"KA#".

任何人都可以想到摆脱或处理该符号的方法吗?在这一点上,我甚至会选择正则表达式.

shi*_*vsn 10

使用str.replace:
df.columns=df.columns.str.replace('#','')

您可以在文档中查看.

  • 特别是,将此结果分配回`df.columns`。 (2认同)