У меня есть список слов, называемых sowpods, и мне нужно проверить, какая комбинация букв существует: как слово или в слове.
Например , если мои буквы - ['r', 't', 'e', 'f']
, одна из возможных комбинаций - 're'
, что находится в пределах 'red'
, поэтому слово «красный» следует сохранить.
У меня уже есть код, который может вычислить все возможные комбинации, но теперь я хочу найти, как добавить все слова, которые соответствуют требованиям, в список.
Я сделал следующее:
import pandas as pd
sowpods = pd.read_csv('sowpods.csv', names=['Word'])
possible_combination = 'RE'
possible_words = pd.DataFrame([], columns=['Word'])
comb_in_word = lambda _: True if (possible_combination in _) else False # ------ line 8
sowpods_bool = sowpods['Word'].apply(comb_in_word) # --------------------------- line 10
possible_words.append(sowpods.loc[sowpods_bool, 'Word'])
Но потом Я получаю:
File "c:\tests.py", line 10, in <module>
sowpods_bool = sowpods['Word'].apply(comb_in_word)
File "C:\Python38-32\lib\site-packages\pandas\core\series.py", line 3848, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas\_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer
File "c:\Users\lenovo\OneDrive\Prog\Projects\Scrabble\tests.py", line 8, in <lambda>
comb_in_word = lambda _: True if possible_combination in _ else False
TypeError: argument of type 'float' is not iterable
Я тестировал свою лямбда-функцию в более контролируемой среде, и она работала нормально, поэтому я уверен, что ошибка возникла не оттуда.
Я не понять, почему я получаю эту ошибку, когда сам ничего не повторяю. Я понимаю, что pandas выполняет итерацию по столбцу DataFrame, но не должно вызывать ошибок, когда вместо целых чисел используются числа с плавающей запятой.
Изменить:
[In]
print(sowpods.head())
[Out]
Word
0 AA
1 AAH
2 AAHED
3 AAHING
4 AAHS
[In]
print(sowpods.dtypes)
[Out]
Word object
dtype: object