Удалить символ из pandas столбцов фрейма данных - PullRequest
4 голосов
/ 06 августа 2020

У меня есть фрейм данных, как показано ниже:

import pandas as pd
import numpy as np
df = pd.DataFrame({'col1':['AA_L8_ZZ', 'AA_L08_YY', 'AA_L800_XX', 'AA_L0008_CC']})
df

    col1
0   AA_L8_ZZ
1   AA_L08_YY
2   AA_L800_XX
3   AA_L0008_CC

Я хочу удалить все 0 после символа 'L'. Мой ожидаемый результат:

    col1
0   AA_L8_ZZ
1   AA_L8_YY
2   AA_L800_XX
3   AA_L8_CC

Ответы [ 2 ]

2 голосов
/ 06 августа 2020
In [114]: import pandas as pd
     ...: import numpy as np
     ...: df = pd.DataFrame({'col1':['AA_L8_ZZ', 'AA_L08_YY', 'AA_L800_XX', 'AA_L0008_CC']})
     ...: df
Out[114]:
          col1
0     AA_L8_ZZ
1    AA_L08_YY
2   AA_L800_XX
3  AA_L0008_CC

In [115]: df.col1.str.replace("L([0]*)","L")
Out[115]:
0      AA_L8_ZZ
1      AA_L8_YY
2    AA_L800_XX
3      AA_L8_CC
Name: col1, dtype: object
1 голос
/ 07 августа 2020

Pandas замена строки для этого достаточно. В приведенном ниже коде выполняется поиск любого 0, которому предшествует L, и заменяется 0 пустой строкой:

df.col1.str.replace(r"(?<=L)0+", "")

0      AA_L8_ZZ
1      AA_L8_YY
2    AA_L800_XX
3      AA_L8_CC

Если вам нужно больше скорости, вы можете go превратить в простой Python с list comprehension:

import re
df["cleaned"] = [re.sub(r"(?<=L)0+", "", entry) for entry in df.col1]
df
     col1       cleaned
0   AA_L8_ZZ    AA_L8_ZZ
1   AA_L08_YY   AA_L8_YY
2   AA_L800_XX  AA_L800_XX
3   AA_L0008_CC AA_L8_CC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...