Как определить точное совпадение строк между двумя кадрами и распечатать строки над ним - PullRequest
0 голосов
/ 06 февраля 2019

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

df1 =

        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

df2 =

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

Я хочу найти местоположение точного значения, соответствующего df2ряд с строкой df1.И создайте результат df3 со всеми строками над соответствующей строкой.

df3 =

        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 голосов
/ 06 февраля 2019

merge, чтобы найти совпадение, и используйте .iloc для подмножества..reset_index сначала, чтобы вы могли получить доступ к исходному индексу после слияния.

df1.iloc[:df1.reset_index().merge(df2)['index'].item()]

       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

Мне нравится .item(), потому что он выдаст ValueError, если несколько строк совпадут, хотя кажется, что вы ожидаете толькоодиночный матч.Если вы хотите иметь дело с возможностью нескольких совпадений, то вы можете захватить все до последнего матча с помощью .iloc[-1] вместо .item():

df1.iloc[:df1.reset_index().merge(df2)['index'].iloc[-1]]

Если ничего не найдено, вы получите ValueErrorс .item() или IndexError с .iloc, так что либо поймайте их и ничего не возвращайте, либо сначала проверьте df1.reset_index().merge(df2).empty и ничего не возвращайте в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...