Python выводит True False после сравнения двух индексов из разных фреймов данных с использованием однострочного кода - PullRequest
0 голосов
/ 10 января 2020

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

small_df =

index    data1
2         123
3         436

big_df =

index    data1
0          78
1          67
2          13
3          46

Я хочу сравнить проверить, если какой-либо индекс small_df присутствует в big_df с использованием однострочного кода и производит True или False. Мой код:

 big_idx  = [True for i in small_df.index if i in big_df.index]

Мой текущий вывод

big_idx = [True True]

Мой ожидаемый вывод

big_idx = [False False True True]

Как вставить False в мой код? Я попробовал следующий код, но безуспешно.

[True for i in small_df.index if i in big_df.index else False]

Ответы [ 3 ]

2 голосов
/ 10 января 2020

Последняя строка может быть исправлена ​​довольно просто:

all(i in big_df.index for i in small_df.index)

Однако есть лучший подход:

small_df.index.difference(big_df.index)

Это вернет элементы индекса из small_df, которые не являются в big_df. Просто проверьте, равна ли его длина нулю.

1 голос
/ 10 января 2020

[True if i in small_df.index else False for i in big_df.index]

0 голосов
/ 10 января 2020

Преобразовать индекс в список, а затем установить, а затем использовать пересечение.

A= set(small_df.index.tolist())
B= set(bid_df.index.tolist())
print(len(A.intersection(B)) > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...