#python #pandas
Вопрос:
У меня есть фрейм данных, такой как
COL1
jcf7180001991334_2-HSPs_ __SP_1
jcf7180001991334:23992-26263( ):SP_2
jcf7180001988059:2889-4542(-):SP_3
и список :
the_list['jcf7180001991334_2-HSPs_ __SP_1','not_in_tab1','jcf7180001991334:23992-26263( ):SP_2','not_intab2','not_intab3','jcf7180001988059:2889-4542(-):SP_3']
и повторяя этот список, например :
for element in the_list:
if element in df['COL1']:
print(element, " in df")
else:
print(element, " not in df")
Затем я должен получить следующий результат :
jcf7180001991334_2-HSPs_ __SP_1 in df
not_in_tab1 not in df
jcf7180001991334:23992-26263( ):SP_2 in df
not_intab2 not in df
not_intab3 not in df
jcf7180001988059:2889-4542(-):SP_3 in df
Но вместо этого я не могу найти ни одного из них в df, и я получаю :
jcf7180001991334_2-HSPs_ __SP_1 not in df
not_in_tab1 not in df
jcf7180001991334:23992-26263( ):SP_2 not in df
not_intab2 not in df
not_intab3 not in df
jcf7180001988059:2889-4542(-):SP_3 not in df
Я предполагаю, что это из-за специальных символов внутри элемента, таких как parentheses
и
или -
? Кто-нибудь знает, как с этим справиться ?
Ответ №1:
По умолчанию in
проверяет, находится ли значение в индексе.
Затем вы можете посмотреть значения следующим образом df['COL1'].values
import pandas as pd
data = {
"COL1": ['jcf7180001991334_2-HSPs_ __SP_1', 'jcf7180001991334:23992-26263( ):SP_2', 'jcf7180001988059:2889-4542(-):SP_3']}
df = pd.DataFrame(data)
the_list=['jcf7180001991334_2-HSPs_ __SP_1', 'not_in_tab1', 'jcf7180001991334:23992-26263( ):SP_2', 'not_intab2', 'not_intab3','jcf7180001988059:2889-4542(-):SP_3']
for element in the_list:
if element in df['COL1'].values: # Here You should look in The values
print(element, " in df")
else:
print(element, " not in df")
[Вывод]
jcf7180001991334_2-HSPs_ __SP_1 in df
not_in_tab1 not in df
jcf7180001991334:23992-26263( ):SP_2 in df
not_intab2 not in df
not_intab3 not in df
jcf7180001988059:2889-4542(-):SP_3 in df
Комментарии:
1. большое спасибо, это решило проблему
Ответ №2:
Дайте этому попробовать: ["in df" if x in df['COL1'].values else "not in df" for x in the_list]