Python 从数据帧中的文本替换unicode

Python 从数据帧中的文本替换unicode,python,pandas,dataframe,unicode,re,Python,Pandas,Dataframe,Unicode,Re,我有这个数据框: >>> df Temp 0 before 1.5° C after 1 before 2° C after 2 before 2° C after 3 before 1.5° C after 我应用此replace方法: newdf = df.replace(r'(?P<quote>\d[.]*[\d]*)(?u:00B0)\s+C', '(?P=quote)'r'C') 我还尝试了

我有这个数据框:

>>> df
                   Temp
0   before 1.5° C after
1     before 2° C after
2    before 2°  C after
3  before 1.5°  C after
我应用此
replace
方法:

newdf = df.replace(r'(?P<quote>\d[.]*[\d]*)(?u:00B0)\s+C', '(?P=quote)'r'C')
我还尝试了
newdf=df.replace(r'°\s+,'')
,但这也不会改变数据帧

其他问题:

df["New"] = df["Temp"].str.replace(r"[^\d.C]", "")
#OR
df["New"] = df["Temp"].str.replace(r"(?<=\d)(°\s*)", "")
print(df)
      Temp   New
0   1.5° C  1.5C
1     2° C    2C
2     2° C    2C
3  1.5°  C  1.5C
  • 我不想删除所有unicode字符,只想在后跟零个或多个空格时删除这个字符
  • ,但我需要用于零个或更多空格的正则表达式
  • 我不能先删除unicode字符,因为
    °
    是需要更改的位置的指示器
使用模式
r”[^\d.C]“
替换除
int
十进制
C

Ex:

df["New"] = df["Temp"].str.replace(r"[^\d.C]", "")
#OR
df["New"] = df["Temp"].str.replace(r"(?<=\d)(°\s*)", "")
print(df)
      Temp   New
0   1.5° C  1.5C
1     2° C    2C
2     2° C    2C
3  1.5°  C  1.5C

另一种方式;只需替换所有
非数字
,不包括

 df["New"]=df.Temp.str.replace('[^\w\.]','')

谢谢,我的MWE太小了。当我给出的字符串在实际文本的上下文中时,第二种方法有效。我编辑了这个问题,以减少MWE的最小值