我用了很多stata,但在我的新工作中,他們不會爲我執行許可證,而且excel還不足以完成一項好工作。python字符串替換條件
我想知道如何使用條件(Pandas中的DataFrame)替換列中的值。
我已經試過:
spot['tipo'] = np.where(['programa']=='CLASSIFICADOES' & ['espec']=='', 'N')
這給了我
TypeError: unsupported operand type(s) for &: 'str' and 'list'
,並試圖:
spot.ix('programa'=='CLASSIFICADOES' & ['espec']=='', 'tipo') = 'N'
這給了我:
SyntaxError: can't assign to function call
和:
spot.replace(['tipo'],['N']) if spot['programa'] == 'CLASSIFICADOES' & ['espec']==''
這是一個無效的語法。 (並且這個更像我在stata上做的那樣) 我有很多處理字符串的問題,數字部分我通常可以在網上找到一些解決方案。
In [79]: spot.dtypes
Out[79]:
marca object
data object
rede object
tipo object
programa object
titulo object
valor float64
cm int64
col int64
area int64
descr object
espec object
dtype: object
不正確的語法,應該是:'發現[ 'TIPO'] = np.where((點[ 'programa'] == 'CLASSIFICADOES')(點[ 'ESPEC'] == '', 'N'))'注意使用由於運算符優先級而需要的括號,並且您需要爲df本身編制索引,您所比較的是帶有單個條目的列表,這是一個字符串 – EdChum 2014-12-04 15:12:26
Hey Ed,這給了我「ValueError :操作數無法與形狀一起播放(4692,)(2,)「 – 2014-12-04 15:14:34
嘗試:'spot ['tipo'] = np.where((spot ['programa'] =='CLASSIFICADOES')&(spot [ 'espec'] =='','N',spot ['tipo']))',無論如何,我認爲我的答案顯示了另一種應該工作的方法 – EdChum 2014-12-04 15:16:09