Возникла проблема, когда я удаляю «.0», что он также удаляет завершающие нули. У меня есть следующий фрейм данных:

Product Number Materia      Key
100000080      100000080.0  CUIP717610000008

Я устал:

df['Material'] = df['Product Number'].astype(str)
df['Key'] = df['Target Location'] + df['Material'].str.rstrip(r'\.0')

В идеале я хотел бы, чтобы Материал отражался как объект без '.0' перед объединением, но это то, что я смог получить до сих пор. Ключ сбрасывает .0 и последний ноль.

-1
mb12 13 Апр 2020 в 21:18

2 ответа

Вы можете разделить на «.» и получить первую строку:

df['Material'] = df['Product Number'].astype(str)
df['Key'] = df['Target Location'] + df['Material'].str.split('.').str[0]
0
Bruno Mello 13 Апр 2020 в 18:25

rstrip документация ясна по этому вопросу: она удаляет все перечисленные символы с правой стороны строки. Вы указали два символа, ноль и точку - функция будет продолжать брать все эти символы с правой стороны, пока не достигнет чего-то, что не входит в этот набор. Вместо этого вам нужно отфильтровать двухсимвольную строку в конце.

Напишите фильтр для endswith(".0") или, возможно, s[-2:] == ".0". Вернуть всю строку, если она не удалась, но s [: - 2], когда вы получите совпадение.

0
Prune 13 Апр 2020 в 18:29