如何根据不同 pandas 列中的值替换字符串
How to replace a string based upon the value in a different pandas column
我正在清理数据集,如果 B 列中的值与特定字符串匹配,我需要删除 A 列中的格式错误。
A B
foo//, cherry
bar//, orange
bar//, cherry
bar apple
所以在这种情况下,如果 B 列是 'cherry',我想将 A 列中的“//,”替换为“,”。最终结果如下所示。
A B
foo, cherry
bar//, orange
bar, cherry
bar apple
非常感谢任何建议
我会先检查 B 列中哪些行包含樱桃:
rows = df['B'].str.contains('cherry')
然后在 A 列以外的这些行中将“//”替换为“”。
您可以简单地编写一个函数,将一行作为 series
,检查 cherry
条件,修复带有 str.replace
和 returns 行的字符串。您可以使用 df.apply
而不是 axis=1
。
def fix(s):
if s['B']=='cherry':
s['A']=s['A'].replace('//,',',')
return s
df.apply(fix, axis=1)
A B
0 foo, cherry
1 bar//, orange
2 bar, cherry
3 bar apple
我正在清理数据集,如果 B 列中的值与特定字符串匹配,我需要删除 A 列中的格式错误。
A B
foo//, cherry
bar//, orange
bar//, cherry
bar apple
所以在这种情况下,如果 B 列是 'cherry',我想将 A 列中的“//,”替换为“,”。最终结果如下所示。
A B
foo, cherry
bar//, orange
bar, cherry
bar apple
非常感谢任何建议
我会先检查 B 列中哪些行包含樱桃:
rows = df['B'].str.contains('cherry')
然后在 A 列以外的这些行中将“//”替换为“”。
您可以简单地编写一个函数,将一行作为 series
,检查 cherry
条件,修复带有 str.replace
和 returns 行的字符串。您可以使用 df.apply
而不是 axis=1
。
def fix(s):
if s['B']=='cherry':
s['A']=s['A'].replace('//,',',')
return s
df.apply(fix, axis=1)
A B
0 foo, cherry
1 bar//, orange
2 bar, cherry
3 bar apple