Более эффективный способ сопоставления строк в Pandas DataFrame - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть столбец Pandas DataFrame под названием «Steuersatz».

Этот столбец состоит из следующих уникальных строк:

array(['19,00%', '0,00%', '5,00%', '4,64%', '4,04%', '4,10%', '1,63%', '3,55%',
       '1,14%', '0,96%', '11,31%', '12,35%', '10,45%', '11,00%', '12,99%',
       '10,83%', '6,82%', '11,50%', '16,00%', '3,30%', '4,00%', '4,16%',
       '4,15%', '10,38%', '11,43%', '11,58%'], dtype=object)

Я пытаюсь сопоставить шаблоны таким образом, чтобы, если число было 19,00 или что-то с 00 в конце, оно вместо этого выведите 19% или только что di git и%

Вот что я делаю, чтобы решить эту проблему:

df["Steuersatz"] = df["Steuersatz"].map("{:,.2f}%".format)
df["Steuersatz"] = df["Steuersatz"].str.replace(".",",")
df['Steuersatz'] = df['Steuersatz'].str.replace("19,00%","19%")
df['Steuersatz'] = df['Steuersatz'].str.replace("0,00%","0%")
df['Steuersatz'] = df['Steuersatz'].str.replace("11,00%","11%")
df['Steuersatz'] = df['Steuersatz'].str.replace("5,00%","5%")
df['Steuersatz'] = df['Steuersatz'].str.replace("4,00%","4%")
df['Steuersatz'] = df['Steuersatz'].str.replace("16,00%","16%")

Для меня это неэффективно, я смотрю на делать это автоматически, а не проверять, чтобы заменить вручную.

Большое спасибо за ваш вклад

1 Ответ

1 голос
/ 24 февраля 2020

Почему бы просто не заменить ,00 пустой строкой? pd.Series.str.replace может обрабатывать регулярные выражения (фактически делает это по умолчанию) и, таким образом, может выполнять частичное сопоставление:

df['Steuersatz'] = df['Steuersatz'].str.replace(",00","")

Это не только удаляет несколько повторяющихся строк из вашего кода, но также обрабатывает новые случаи, скажем, 23, 00%

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...