python - 如何有条件地替换熊猫数据框列中的子字符串?
问题描述
我有一系列字符串(时间戳),我想有条件地替换这些字符串中的子字符串: - 如果有“+”字符,我想用“-”替换它 - 或者相反,如果有是一个'-'字符,我想用'+'替换它
我显然不能在没有条件的情况下简单地使用 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