[英]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.