2013-01-15 40 views
22

我有一個類似的問題的一個張貼在這裏:更換在python大熊貓字符串的一部分數據幀

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只刪除字符串開頭和結尾的指定字符。如果你想刪除全部\n,你需要使用replace

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

這是'inplace'? – user1767754

+0

@ user1767754:它修改原始的DataFrame,如果這就是你的意思。儘管這不是嚴格的「到位」它使用修改後的值創建一個新列,然後將其分配回來,覆蓋原始列。 – BrenBarn

6

你可以使用參數方法的replaceregex以實現:

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']。astype(np。 str).replace(to_replace ='\ n',value ='',regex = True)'。否則只有'str'值將被替換... – ragesz

+2

to_replace也可以使用一個列表:'.replace(to_replace = ['\ n','\ t'],value ='',regex = True)'' –