2016-01-10 82 views
2

我有一個包含多列的數據幀。我想查看一列,如果列中的任何字符串包含@,我想用另一個字符串替換它們。我會如何去做這件事?在熊貓數據幀中替換字符串

回答

5

在大熊貓一個數據幀由這是系列專欄 - Panda docs link

我將使用正則表達式,因爲它是有用的,每個人都需要實踐,包括我自己! Panda docs for text manipulation

請注意str.replace。你想要的regex字符串就是這個(它對我有效):'。* @ +。*',它表示「任何字符(。)零次或多次(*),後跟一個@ 1次或更多次(+)任何字符(。),零次或多次(*)

df['column'] = df['column'].str.replace('.*@+.*', 'replacement') 

應該工作,其中「替換」是任何你想要的字符串就擺在。

2

假設你叫你的數據幀df,你可以這樣做:

pd.DataFrame(map(lambda col: map(lambda x: 'anotherString' if '@' in x else x, df[col]), df.columns)).transpose() 
+0

如果你有興趣在特定列的子列表,只是把它們,而不是df.columns – ranlot

+0

這將替換@值與字符串I輸入,我希望用一個新值替換整個字符串,如果當前字符串包含@抱歉,如果我沒有指定 – DJK

+0

好吧,我修改了答案於是 – ranlot

2

我的建議:

df['col'] = ['new string' if '@' in x else x for x in df['col']] 

不知道這是更快。