Строка учетной записи обновления пакетов PandasPython

Программы на Python
Anonymous
 Строка учетной записи обновления пакетов Pandas

Сообщение Anonymous »

У моей организации есть номера счетов, которые состоят из объединения нескольких полей. Последнее поле всегда 4 символа (обычно 0000) < /p>

Код: Выделить всё

Org           Account
01       01-123-0000
01       01-456-0000
02       02-789-0000
02       02-456-0000
03       03-987-0000
03       03-123-1234
< /code>
У меня также есть словарное отображение того, сколько символов должен быть последним компонентом. < /p>
MAP = {'01': 4, '02': 3, '03': 3}
< /code>
Однако есть также специальные отображения для org 03: < /p>
D03_SPECIAL_MAP = {'0000': '012', '1234': '123'}
< /code>
Мой код для обновления последнего компонента: < /p>
for i,r in df.iterrows():
updated = False # Keep track if we have updated this row

# Split off last component from the rest of the account
Acct, last_comp = r['Account'].rsplit('-',1)

# Check if we need to update code length and the code length does not match
if r['Org'] in MAP and len(last_comp) != MGMT_MAP[r['Org']]:
df.at[i,'Account'] = '-'.join(Acct) + "-" + last_comp.zfill(MAP[r['Org']])
updated = True

# Special mapping for Org 03
if r['Org'] =='03' and last_comp in D03_SPECIAL_MAP.keys():
df.at[i,'Account'] = '-'.join(Acct) + "-" + D03_SPECIAL_MAP[last_comp]
updated = True

if not updated: # Join Default if we have not hit either of he conditions above
df.at[i,'Account'] = '-'.join(Acct) + "-" + last_comp
< /code>
Вывод этого будет: < /p>
Org           Account
01       01-123-0000
01       01-456-0000
02       02-789-000
02       02-456-000
03       03-987-012
03       03-123-123
< /code>
Мой код работает, как и ожидалось, за исключением того, что этот процесс немного медленно проверяет каждую запись. Есть ли способ выполнить ту же работу без использования df.iterrows () 
?

Подробнее здесь: https://stackoverflow.com/questions/793 ... unt-string

Вернуться в «Python»