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