Я предварительно форматирую некоторые данные для налоговой декларации и использую python для автоматизации некоторых работ в Excel. У меня есть фрейм данных с тремя столбцами: учетная запись; Противоположный счет; Количество. У меня есть только имена противоположной учетной записи и значения, но значения для одной и той же пары учетных записей - противоположная учетная запись должна быть точно такой же. Например:
Account Opposite Acc. Amount
Cash -240.56
Supplies 240.56
Dentist -10.45
Gum 10.45
Исходя из этого, я могу сделать вывод, что наличные деньги являются противоположностью расходных материалов, а стоматолог - противоположностью жевательной резинке, поэтому я хотел бы, чтобы мой результат составил:
Account Opposite Acc. Amount
Supplies Cash -240.56
Cash Supplies 240.56
Gum Dentist -10.45
Dentist Gum 10.45
Сейчас я делаю это вручную, используя str.contains
df = df.assign(en_accounts = df['Opposite Acc.'])
df['Account'] = df['Account'].fillna("0")
df.loc[df['Account'].str.contains('Cash'), 'Account'] = 'Supplies'
Но есть много переменных, и мне интересно, есть ли способ автоматизировать этот процесс в python. Одной из стратегий может быть: если две строки складывают до 0, счета совпадают -> поэтому, когда элемент «А» (например, расходные материалы) происходит в «Противоположном счете», элемент Б (например, «Наличные») помещается в один и тот же строка, но в «Аккаунте».
Это то, что я имею до сих пор:
df['Amount'] = np.abs(df["Amount"])
c1 = df['Amount']
c2 = df['Opposing Acc.']
for i in range(1,len(c1)-1):
p = c1[i-1]
x = c1[i]
n = c1[i+1]
if p == x:
for i in range(1,len(c2)-1):
a = c2[i-1]
df.loc[df['en_account']] = a
Но я получаю следующую ошибку: «Ни один из [Index [....] \ n dtype = 'object', length = 28554)] не находится в [index]"