2017-04-19 184 views
1

由其他值替換列中的值我想刪除的描述在數據幀中,如果值是相同的標題:有條件在熊貓

m[m.Description == m.Caption].Description = \ 
    m[m.Description == m.Caption].Description.map(lambda x: '') 

我覺得這個寫入是相當樣板:

df[condition][columns] = df[condition][columns].map(lambda x: value) 

有沒有更好的語法來做同樣的事情?我想是這樣的:

df[condition][columns].map(lambda x: value, inplace=True) 
+0

我無法測試它現在但是米這會工作'm ['Description'] [m.Description == m.Caption] =''' – foglerit

回答

2

您需要locboolean indexing

m.loc[m.Description == m.Caption, 'Description'] = ' ' 

樣品:

m = pd.DataFrame({'Description':['a','b','f'], 
        'Caption':['a','c',''], 
        'C':[7,8,9]}) 

print (m) 
    C Caption Description 
0 7  a   a 
1 8  c   b 
2 9     f 

m.loc[m.Description == m.Caption, 'Description'] = ' ' 
print (m) 
    C Caption Description 
0 7  a    
1 8  c   b 
2 9     f 

或者使用mask

m['Description'] = m['Description'].mask(m.Description == m.Caption, ' ') 
print (m) 
    C Caption Description 
0 7  a    
1 8  c   b 
2 9     f 
+0

所以這裏的魔法是'loc' – nowox

+0

是的,正好。或者使用'mask' – jezrael