Вернуть все строки из первичного информационного кадра выше 1-й совпадающей строки (из верхней части вторичного информационного кадра) - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть два кадра данных, как указано ниже:

Primary_df:

        Symbol                   Subject   Broadcast Date/Time
0   CUMMINSIND  Financial Result Updates   06-Feb-2019 18:31
1          IGL  Financial Result Updates   06-Feb-2019 17:16
2   MANAPPURAM  Financial Result Updates   06-Feb-2019 16:10
3   MANAPPURAM            Result Updates   06-Feb-2019 16:00
4     JSWSTEEL  Financial Result Updates   06-Feb-2019 15:18

Secondary_df:

        Symbol                   Subject   Broadcast Date/Time
0   MANAPPURAM  Financial Result Updates   06-Feb-2019 16:10

Логика должна проверять точное совпадение строки в Primary_df из Secondary_df(содержит только 1 строку) и возвращает Result_df.

Я хочу Result_df как:

        Symbol                   Subject   Broadcast Date/Time
0   CUMMINSIND  Financial Result Updates   06-Feb-2019 18:31
1          IGL  Financial Result Updates   06-Feb-2019 17:16

1 Ответ

0 голосов
/ 08 февраля 2019

Используйте merge с новым столбцом и фильтруйте по iloc:

a = Primary_df.assign(A=np.arange(len(Primary_df))).merge(Secondary_df)['A']

df = Primary_df.iloc[:a.iat[0]]
print (df)
       Symbol                   Subject Broadcast Date/Time
0  CUMMINSIND  Financial Result Updates   06-Feb-2019 18:31
1         IGL  Financial Result Updates   06-Feb-2019 17:16

Если получите:

IndexError: индекс 0 выходит за пределы оси 0 с размером 0

, это означает, что ни одна строка не соответствует, и нужно более общее решение с next для возврата 0 для отсутствия совпадения:

df = Primary_df.iloc[: next(iter(a), 0)]
...