Pandas 将列值有条件地替换为表中的其他值

Pandas 将列值有条件地替换为表中的其他值,pandas,dataframe,Pandas,Dataframe,如果值与标题相同,我想删除数据框中的描述: 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

如果值与标题相同,我想删除数据框中的描述:

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)
您需要:

样本:

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
或者使用:


我现在无法测试它,但这可能会工作
m['Description'][m.Description==m.Caption]=''
是的,完全正确。或者使用
mask
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
m['Description'] = m['Description'].mask(m.Description == m.Caption, ' ')
print (m)
   C Caption Description
0  7       a            
1  8       c           b
2  9                   f