Как сравнить два столбца из двух DF с сохранением некоторых констант столбцов и строк печати? - PullRequest
1 голос
/ 22 мая 2019

Я работаю над проектом, в котором мне нужно найти изменения, сделанные на втором листе (конкретный столбец), по сравнению с основным / основным листом. после этого я хотел напечатать или сохранить всю строку, в которой найдены изменения. вот больше подробностей. оба листа Excel имеют много столбцов мой мастер лист имеет данные примерно так:

 TID    LOC HECI    RR  UNIT    SUBD    S   EUSE    INV ACT CAC FMT CKT DD   
SCID    CUSTOMER    F&E/SERVICE ID  BVAP    PORD    AUTH    RULE    ST  RGN
CHCGILDTO3P050101D  CHCGILDTO3P M3MSA0S1RA  0501.01D    1A1              IE D   STR3RA8 S   CL/HFFS/688898 /LGT 2018-07-21      BLOOMBERG LP     DS3-16668545   WMS881282       E.485339        IL  N
CHCGILDTO3P050101D  CHCGILDTO3P M3MSA0S1RA  0501.01D    1A2             IE  J           DNA UNDER DECOM EID 2466    2019-03-22              WMS881282       E.485339        IL  N
CHCGILDTO3P050101D  CHCGILDTO3P M3MSA0S1RA  0501.01D    1A3             IE  J           DNA UNDER DECOM EID 2466    2019-03-22              WMS881282       E.485339        IL  N
CHCGILDTO3P050101D  CHCGILDTO3P M3MSA0S1RA  0501.01D    1A4             IE  J           DNA UNDER DECOM EID 2466    2019-03-22              WMS881282       E.485339        IL  N
CHCGILDTO3P050101D  CHCGILDTO3P M3MSA0S1RA  0501.01D    1A5             IE  J           DNA UNDER DECOM EID 2466    2019-03-22              WMS881282       E.485339        IL  N

и мой второй лист содержит следующие данные:

  HECI  UNIT    INV SUB ACT CKT PACT    DD  LOC RR
M3MSA0S1RA  1A1 IE      $   CL/HFFS/688898 /LGT D   72118   CHCGILDTO3P 0501.01D
M3MSA0S1RA  1A2 IE      J   DNA UNDER DECOM EID 2466        32219   CHCGILDTO3P 0501.01D
M3MSA0S1RA  1A3 IE      J   DNA UNDER DECOM EID 2466        32219   CHCGILDTO3P 0501.01D
M3MSA0S1RA  1A4 IE      J   DNA UNDER DECOM EID 2466        32219   CHCGILDTO3P 0501.01D
M3MSA0S1RA  1A5 IE      J   DNA UNDER DECOM EID 2466        32219   CHCGILDTO3P 0501.01D

поэтому сначала я хочу проверить, совпадают ли значения LOC HECI RR & UNIT на обоих листах, которые я хочу переместить вперед, и в столбец comapre ACT и вывести разницу в качестве выходных данных.

например, вы можете увидеть строку # 1 в основных данных ACT - «D», а где, как и на втором листе, оно изменяется на «$»

так что я хочу выводить что-то вроде связанная полная строка, в которой говорится, что она меняется с 'D' на '$'

это кажется мне очень сложным, так как я на начальной стадии питона и панд.

Я пытался использовать циклы, но не смог выполнить их, если использовал слишком много циклов, что, как я полагаю, не панды

вот мой код:

import pandas as pd

df1 = pd.read_excel("Master Database.xlsx")
df2 = pd.read_excel("CHCGILDTO3P_0501.01D.xlsx")
d1_act = df1['ACT']
d2_act = df2['ACT']
for index1, row1 in df1.iterrows():
    for index2, row2 in df2.iterrows():
        if(row1['LOC'],row1['HECI'],row1['RR']) ==(row2['LOC'],row2['HECI'],row2['RR']):
            for x in d1_act and y in d2_act:
                #print(x,y)
                if x != y:

                    print (x, y) # not getting how to print complete respective row

                else:
                    pass
        else:
            pass

Я хочу вывод:

M3MSA0S1RA  1A1 IE      $   CL/HFFS/688898 /LGT D   72118   CHCGILDTO3P 0501.01D

изменяется от 'D до' $ '

пожалуйста, помогите! заранее спасибо!

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете использовать merge для вашего случая, например:

df_result = master_df.merge(specific_df, on = ['LOC','HECI','RR'])

df_result будет иметь фрейм данных с полными строками, которые соответствуют столбцам «LOC», «HECI» и «RR». Затем вы можете проверить значения в df_result в столбцах с именами ACT_x (от master_df) и ACT_y (от specific_df), чтобы увидеть, есть ли разница, и распечатать их по мере необходимости:

print(df_result[df_result.ACT_x != df_result.ACT_y])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...