![](/img/trans.png)
[英]How can I check if a string in a column is a sub-string in another column using dataframe and pandas
[英]How to replace a sub-string conditionally in a pandas dataframe column?
我有一系列字符串(时间戳),我想有条件地替换这些字符串中的子字符串: - 如果有 '+' 字符,我想用 '-' 替换它 - 或者相反,如果有是“-”字符,我想用“+”替换它
我显然不能在没有条件的情况下简单地使用 replace() ,或者最后,所有 + & - 都将转换为单个 + 字符。
mySeries = mySeries.str.replace('+','-', regex=False)
mySeries = mySeries.str.replace('-','+', regex=False)
请问,我应该如何操作这个符号反转?
我预先感谢您的帮助。 祝你有美好的一天,
最好的,
皮埃尔
你可以这样做:
Char 1 What-What
Char 2 What+What
Char 3 0
Char 4 0
Char 5 0
Char 6 0
Char 7 0
Char 8 0
mySeries.loc[mySeries.str.contains(r'[-+]') == True] = mySeries.str.translate(str.maketrans("+-", "-+"))
Char 1 What+What
Char 2 What-What
Char 3 0
Char 4 0
Char 5 0
Char 6 0
Char 7 0
Char 8 0
如果它不是一个系列,你必须这样做:
A B C D E F G H
Char 1 1 0 0 0 0 0 0 What-What
Char 2 1 0 0 0 0 0 0 What+What
Char 3 0 1 0 0 0 0 0 0
Char 4 0 0 1 0 0 0 0 0
Char 5 0 0 0 1 0 0 0 0
Char 6 0 0 0 0 1 0 0 0
Char 7 0 0 0 0 1 0 0 0
Char 8 0 0 0 0 0 1 0 0
df.H.loc[a.str.contains(r'[-+]') == True] = df.H.str.translate(str.maketrans("+-", "-+"))
A B C D E F G H
Char 1 1 0 0 0 0 0 0 What+What
Char 2 1 0 0 0 0 0 0 What-What
Char 3 0 1 0 0 0 0 0 0
Char 4 0 0 1 0 0 0 0 0
Char 5 0 0 0 1 0 0 0 0
Char 6 0 0 0 0 1 0 0 0
Char 7 0 0 0 0 1 0 0 0
Char 8 0 0 0 0 0 1 0 0
您可以将正则表达式与接收匹配对象的 lambda 函数一起使用:
0 qqq--++www++
1 1234+5678-
dtype: object
s.str.replace(pat=r"\+|-", repl= lambda mo: "+" if mo.group()=="-" else "-", regex=True)
0 qqq++--www--
1 1234-5678+
dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.