Использование pandas isin ()
Если предположить, что ваш фрейм данных похож на приведенный ниже, который я называю df
со столбцами "word" и "number".
word number
0 and 2
1 hi 3
2 or 4
3 is 5
4 hello 6
Я быиспользуйте функцию isin от pandas.
In [1]: a = ['and', 'or', 'is']
df[~df['word'].isin(a)]
Out[1]: word number
1 hi 3
4 hello 6
Тогда, если вам нужен словарь, вы можете просто сжать нужные вам столбцы.
In [2]: a = ['and', 'or', 'is']
df2 = df[~df['word'].isin(a)]
dict(zip(df2['word'], df2['number']))
Out[2]: {'hello': 6, 'hi': 3}
Используя свой оригиналcode
Если вы хотите, чтобы ваш исходный код работал, просто замените операторы if
и break
.
d = {}
for k, v in df.values:
print(k)
if k in a:
continue
else:
d[k] = int(v)
Обратите внимание, что a
- это список, а k
- этострока.Так что a==k
всегда будет иметь значение false, и вы никогда не пропустите значение.Вместо этого вам нужно проверить, есть ли k in a
.Кроме того, break
не совсем то, что вы хотите, так как он остановит цикл for, как только вы обнаружите значение в a
.Вам нужно continue
, чтобы перейти к следующему значению в вашем фрейме данных.