簡體   English   中英

為什么替換子字符串在 Pandas 數據框中不起作用?

[英]Why replace substring does not work in Pandas dataframe?

我嘗試在起始行和結束行中替換所有符號" -

dtnew.applymap(lambda x: x.replace('^-', ''))
dtnew.applymap(lambda x: x.replace('^"', ''))

但是輸出數據框有這些符號

好吧,如果性能不是問題,您可以遍歷列和行並使用簡單的替換(見下文)。 同樣,如果數據框不是很大並且您不關心性能,我只會使用它。

for column in df.columns:
    for i in df.index:    
        df[column][i] = df[column][i].replace('-','').replace('"','')

假設此示例並且您只想替換前導字符:

df = pd.DataFrame([['- abc', 'def -'], ['" ghi-', '--jkl']])

        0      1
0   - abc  def -
1  " ghi-  --jkl

使用str.lstrip

df2 = df.apply(lambda c: c.str.lstrip('- "'))

輸出:

      0      1
0   abc  def -
1  ghi-    jkl

# as list: [['abc', 'def -'], ['ghi-', 'jkl']]

僅對於第一個字符,使用str.replace

df2 = df.apply(lambda c: c.str.replace('^[- "]', '', regex=True))

輸出:

       0      1
0    abc  def -
1   ghi-   -jkl

# as list: [[' abc', 'def -'], [' ghi-', '-jkl']]

概括:

  • 剝離開始和結束,使用str.strip

  • 刪除所有字符(任何地方): df.apply(lambda c: c.str.replace('[- "]', '', regex=True))

  • 刪除第一個或最后一個匹配字符: df.apply(lambda c: c.str.replace('(^[- "]|[- "]$)', '', regex=True))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM