2013-01-15 8 views
22

をDATAFRAME:が、私はここに掲載のと同様の問題を抱えている

Pandas DataFrame: remove unwanted parts from strings in a column

私は、データフレーム内の文字列の中から改行文字を削除する必要があります。基本的に、私はPythonのjsonモジュールを使ってAPIにアクセスしました。 DataFrameの作成も驚くほど効果的です。しかし、最終的に最終結果をcsvに出力したい場合、csvファイルに偽の「新しい行」を作成する改行があるため、ちょっと立ち往生します。

だから、基本的に私はこれをオンにしようとしています:

」...これは段落です。

そして、これは別の段落です... 'これに

は' ...これは段落です。これは別の段落です... '

「\ n」や段落区切りのための特別な記号を保存しても構いません。だからそれはすぐに剥ぎ取ることができます。私はいくつかのバリエーションを試してみた

misc['product_desc'] = misc['product_desc'].strip('\n') 

AttributeError: 'Series' object has no attribute 'strip' 

は、ここでは別の

misc['product_desc'] = misc['product_desc'].str.strip('\n') 

TypeError: wrapper() takes exactly 1 argument (2 given) 

misc['product_desc'] = misc['product_desc'].map(lambda x: x.strip('\n')) 
misc['product_desc'] = misc['product_desc'].map(lambda x: x.strip('\n\t')) 

だそこには、エラーメッセージはありませんが、改行文字はどちらか、離れて行っていません。これで同じことが:

misc = misc.replace('\n', '') 

CSVの行への書き込みはこれです:パンダの

misc_id.to_csv('C:\Users\jlalonde\Desktop\misc_w_id.csv', sep=' ', na_rep='', index=False, encoding='utf-8') 

バージョンは0.9.1

感謝です! :)

答えて

46

stripは、文字列の先頭と末尾の指定された文字のみを削除します。 をすべて削除する場合は\nreplaceを使用する必要があります。

misc['product_desc'] = misc['product_desc'].str.replace('\n', '') 
+0

はこの 'inplace'のですか? – user1767754

+0

@ user1767754:元のDataFrameを修正します。それは厳密には「適切な」場所ではない。変更された値を持つ新しい列が作成され、元の列を上書きして戻されます。 – BrenBarn

6

あなたはそれを達成するためにreplace方法のregexパラメータを使用できます。

misc['product_desc'] = misc['product_desc'].replace(to_replace='\n', value='', regex=True) 
+2

'product_desc'が混合値(例えばfloat、str ...)を含んでいる場合は、それを' np.str'に変換して正しく動作させます: 'misc ['product_desc'] = misc ['product_desc']。 str).replace(to_replace = '\ n'、value = ''、regex = True)を返します。それ以外の場合は 'str'の値だけが置換されます... – ragesz

+2

to_replaceはリストも使用できます:' .replace(to_replace = ['\ n'、 '\ t']、value = ''、regex = True) ' –

関連する問題