Заявление о состоянии (For, If, Elif и др.) - PullRequest
0 голосов
/ 05 марта 2020

В скрипте python, который я сейчас делаю, есть:

У меня есть 2 столбца:

  1. Сумма (Ca sh books)

  2. Сумма (банковские записи)

То, что я делаю:

  1. Найдите их разницу и добавьте к 'РАЗНИЦУ 'столбец для сравнения их значений
  2. Добавление примечаний в столбец «ЗАМЕЧАНИЯ».

Вот примечания, которые должны быть перечислены:

a. СОГЛАСОВАНО, если РАЗНИЦА = 0

b. ПЕРЕЗАПИСЬ, если РАЗНИЦА> 0, но не равна наименьшему

c. NOT YET ENCASHED, если DIFFERENCE> 0 и равно minuend (или вычитаемому 0)

d. ЗАПИСЬ, если ОТЛИЧИЕ <0, но не равно вычитаемому </p>

e. UNRECORDED, если DIFFERENCE <0 и равно вычитаемому (или minuend равно 0) </p>

Вот мой код:

import pandas as pd
df3 = pd.read_csv('DB3-BankRecon.csv',encoding='latin-1', index_col= False, thousands= ',',decimal=b'.') #df3 because this is the 3rd dataframe
amount1, amount2 = df3[' AMOUNT (Cash books)'], df3[' AMOUNT (Bank Records)']
diff = amount1 - amount2
df3['DIFFERENCE'] = diff #Created 'DIFFERENCE' column and save the difference
df3['REMARKS'] = '' #REMARKS column

for row in diff: #rows in DIFFERENCE column
    for cashrow in amount1: #rows in AMOUNT (Cash books)
        for bankrow in amount2: #rows in AMOUNT (Bank Records)
            try:
                if row != 0:
                    if row > 0:
                        if row < cashrow:
                            df3['REMARKS'] = 'Over-Recording'
                        else:
                            df3['REMARKS'] = 'Not yet encashed'
                    elif row < 0:
                        if abs(row) < bankrow:
                            df3['REMARKS'] = 'Under-Recording'
                        else:
                            df3['REMARKS'] = 'Unrecorded' 
                else: # row == 0
                    df3['REMARKS'] = 'Matched'
            except:
                print('Error')

df3.to_csv('Try.csv', index=False)

каждый раз, когда я запускаю результаты в коде VS, все в порядке (особенно условия)

, но когда я добавляю результаты РАЗЛИЧИЙ и ЗАМЕЧАНИЯ к данным в фрейм, все значения ЗАМЕЧАНИЯ становятся «СОВМЕСТНЫМИ», даже если они не являются.

[Вот скриншот csv file] [1]

Как решить эту проблему?

всего за месяц в Python.

Заранее спасибо:)

ОБНОВЛЕНИЕ: (Спасибо за ответы :))

Вот пример ввода: (CSV-файл открыт в блокноте)


AMOUNT(Cash books),AMOUNT(Bank Records)
1065.00,1065.00
1056.40,1056.40
1038.60,1033.60
1027.98,1072.98
1027.00,0.00
0.00,1015.44
1001.66,1001.66
1001.50,1001.50

Ожидаемый результат

AMOUNT (Cash books) | AMOUNT (Bank Records) | DIFFERENCE | REMARKS

     1065.00        |        1065.00        |      0.00  | Matched
     1056.40        |        1056.40        |      0.00  | Matched
     1038.60        |        1033.60        |      5.00  | Over-Recording
     1027.98        |        1072.98        |    -45.00  | Under-Recording
     1027.00        |           0.00        |  1,027.00  | Not yet encashed
        0.00        |        1015.44        | -1,015.44  | Unrecorded
     1001.66        |        1001.66        |      0.00  | Matched
     1001.50        |        1001.50        |      0.00  | Matched

Примечание. Когда я запускаю код в редакторе, не сохраняя его в файле csv, я получаю ожидаемый вывод ЗАМЕЧАНИЯ. но когда я пытаюсь сохранить его в фрейме данных и в файле, все это приводит к 'MATCHED'.

Спасибо за помощь:)

...