2017-04-03 36 views
3

我有一個熊貓數據幀,假設: df = pd.DataFrame({'Column name':['0,5',600,700]})Pandas.DataFrame.str.replace函數替換花車爲NaN

我需要刪除,。該代碼是: df_mod = df.stack().str.replace(',','').unstack()

結果我得到:[05, NaN, NaN]

你有,爲什麼我的表達與南,以及如何避免它取代數字什麼想法嗎?非常感謝!

+0

您有混合dtypes所以我認爲,更換造成的D型細胞進行上變頻浮動填寫 – EdChum

回答

5

這些數字視爲數值,不具有str.replace方法,可以將列轉換爲字符串,刪除逗號,然後轉換數據類型回:

df['Column name'].astype(str).str.replace(",", "").astype(int) 

#0  5 
#1 600 
#2 700 
#Name: Column name, dtype: int64 
1

我有一個替代答案,只是爲了好玩:

df.applymap(lambda x: x.replace(',','') if type(x) is str else x) 

這將檢查是否每個值爲str類型,然後.replace爲任何str。

+0

我喜歡它,謝謝! – Vlad

+0

試圖使用這個變體,它似乎什麼都不做)我們需要以某種方式運行x的迭代 – Vlad

+0

它工作正常,在你的文章中的示例df。你的DF有點不同嗎? – Yeile

1

由@Psidom標識,您得到NaN,因爲int s沒有replace方法。正如你可以運行它,並在這些Nan值與原列

c = 'Column name' 
df[c].str.replace(',', '').fillna(df[c]) 

0  05 
1 600 
2 700 
Name: Column name, dtype: object 

這會保留所有的dtypes