ลบเครื่องหมายดอลลาร์ออกจาก Python Pandas Dataframe ทั้งหมด

ฉันต้องการลบเครื่องหมายดอลลาร์ออกจาก dataframe ของ python pandas ทั้งหมด มันคล้ายกับโพสต์นี้:

ลบอักขระทั้งหมด

อย่างไรก็ตาม ฉันกำลังพยายามลบเครื่องหมายดอลลาร์ที่ใช้งานไม่ได้ออก ฉันเชื่อว่าเป็นเพราะ regex มองว่าเครื่องหมายดอลลาร์เป็นจุดสิ้นสุดของสตริง แต่ฉันไม่แน่ใจว่าต้องทำอย่างไร นี่คือสิ่งที่ฉันได้สร้างขึ้นจนถึงตอนนี้:

dftest = pd.DataFrame({'A':[1,2,3],
                       'B':[4,5,6],
                       'C':['f;','$d:','sda%;sd$'],
                       'D':['s%','d;','d;p$'],
                       'E':[5,3,6],
                       'F':[7,4,3]})

ซึ่งให้ผลลัพธ์:

In [155]: dftest
Out[155]:
   A  B         C     D  E  F
0  1  4        f;    s%  5  7
1  2  5       $d:    d;  3  4
2  3  6  sda%;sd$  d;p$  6  3

ฉันลองลบเครื่องหมายดอลลาร์ออกดังนี้:

colstocheck = dftest.columns

dftest[colstocheck] = dftest[colstocheck].replace({'$':''}, regex = True)

นั่นไม่ได้ลบเครื่องหมายดอลลาร์ แต่รหัสนี้จะลบเครื่องหมายเปอร์เซ็นต์:

dftest[colstocheck] = dftest[colstocheck].replace({'%':''}, regex = True)

เลยไม่แน่ใจว่าจะแทนที่เครื่องหมายดอลลาร์ได้อย่างไร


person d84_n1nj4    schedule 29.03.2017    source แหล่งที่มา


คำตอบ (2)


คุณต้องหลบหนี $ โดย \:

dftest[colstocheck] = dftest[colstocheck].replace({'\$':''}, regex = True)
print (dftest)
   A  B        C    D  E  F
0  1  4       f;   s%  5  7
1  2  5       d:   d;  3  4
2  3  6  sda%;sd  d;p  6  3
person jezrael    schedule 29.03.2017
comment
อ่า ฉันกำลังเล่นกับเรื่องนั้นอยู่แต่ใช้งานไม่ได้ ฉันไม่คุ้นเคยกับ regex ขอบคุณ! - person d84_n1nj4; 29.03.2017
comment
หมายเหตุ: คุณสามารถระบุอักขระจำนวนมากใน dict ได้เช่นกัน: {'\$': '', ',': ''} เพื่อแทนที่เครื่องหมายดอลลาร์และเครื่องหมายจุลภาค เป็นต้น มีประโยชน์อย่างยิ่งเมื่อจัดการกับการส่งออกขยะ Excel :) - person Hendy; 26.09.2017

เพื่อเพิ่มคำตอบของยิซราเอล เพิ่ม 'r' ก่อนสตริงแบ็กสแลชเพื่อหลีกเลี่ยงคำเตือนลำดับการหลีกเลี่ยงที่ไม่ถูกต้องของ pep8

dftest[colstocheck] = dftest[colstocheck].replace({r'\$':''}, regex = True)
person Sam_Kim    schedule 13.01.2021