簡體   English   中英

python字符串替換條件

[英]python string replace conditional

我花了很多時間,但在我的新工作上,他們不會為我掏出許可證,而excel不足以做好工作。

我想知道如何使用條件(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上做的事情非常相似)我在處理字符串(通常可以在Web上找到一些解決方案)的數字部分時遇到很多問題。

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

您嘗試過的錯誤有多個:

spot['tipo'] = np.where(['programa']=='CLASSIFICADOES' & ['espec']=='', 'N')

應該:

spot['tipo'] = np.where((spot['programa']=='CLASSIFICADOES') & (spot['espec']==''), 'N', spot['tipo'])

注意,由於運算符的優先級而需要使用方括號,並且您需要索引df本身,您比較的是帶有單個條目的列表,該條目是一個字符串。

spot.ix('programa'=='CLASSIFICADOES' & ['espec']=='', 'tipo') = 'N'

應該:

spot.ix[(spot['programa']=='CLASSIFICADOES') & (spot['espec']==''), 'tipo'] = 'N'

由於與上述相同的原因

我認為你應該使用這樣的東西

Var= 'Yes' if fruit == 'Apple' else 'No'

在您的情況下,我無法完全理解您的代碼,但是我認為meybe就是這樣。

spot['tipo'] = 'N' if (np.where(['programa']=='CLASSIFICADOES' & ['espec']=='')) else ''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM