2016-06-21 9 views
5

ジョーカーの中には、当社のエンジニアリング問題を追跡するためにロータスデータベース/アプレットを作った人もいます。冗談は、情報の重要な部分が特殊記号...(ハッシュタグ、シャープ記号、¥u0023)という名前の付いた名前であることです。pandas dataframeカラム名:特別なcharaterを削除

略記サンプル:パンダのデータフレームとしてのpython3でCSVファイルとプロセスに

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 

I出力、この表(4K行、15列)。

さまざまな出力を生成します。私が次のようなものを使用した場合:

df.iloc[:,[0,3,1,8,9,10]] 

適切な出力が得られ、キー列は"KA#"と表示されます。 (私が "キー列"と言うとき、私は "最も重要"を意味する... "索引"ではない)私はシリアル索引を保持する

残念ながら、人はときどきLotusの列の順序をcsv so "KA#"が特定の列番号になることは保証できません。私は、列名を使用したいと思います:

df.loc[:,["KA#","Issue Date","Current Position"]] 

しかし"KA#"列はNaNにので満たされています。

ご協力いただきありがとうございます。最後に

、私は"KA#"単に"KA"に名前を変更しようとした場合:

df['KA#'].name = 'KA' 

はKeyError例外をスローし、

df = df.rename(columns={"KA#": "ka"}) 

は完全に無視されます。列は"KA#"と表示されます。

誰もがそのシンボルを取り除く方法を考えることができますか?私はこの時点で正規表現のために解決するだろう。

ご協力いただきありがとうございます。

答えて

5

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

あなたはdocumentationでこれを確認することができます。

+1

特に、この結果を 'df.columns'に割り当てます。 – chrisaycock

+0

はい、これはドキュメントで確認できます。 – shivsn

+0

私は不適切な文字を持つ列が1つしかないので、これは私の問題を解決しました。したがって、 "答えた"。そしてshivsnに「ありがとう」。 特定の列をターゲットにしたい場合、これはやや不器用な方法です。私はそれに気づくと思います。 –

関連する問題