对熊猫使用 lambda 函数.数据帧布尔索引报告类型错误



我有一个叫做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-32libsite-packagespandascoreseries.py", line 3848, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas_libslib.pyx", line 2329, in pandas._libs.lib.map_infer
File "c:UserslenovoOneDriveProgProjectsScrabbletests.py", line 8, in <lambda>
comb_in_word = lambda _: True if possible_combination in _ else False
TypeError: argument of type 'float' is not iterable

我在更可控的环境中测试了我的 lambda 函数,它工作正常,所以我相信错误不是来自那里。

我不明白为什么当我自己不遍历任何东西时会出现此错误。我知道熊猫正在遍历数据帧的列,但它不应该在使用浮点数而不是整数时出错。

编辑:

[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

在单词列表中有'NA''NULL',熊猫表示为NaNs。我必须指定keep_default_na=False

sowpods = pd.read_csv('projects/scrabble/sowpods_en.csv', names=['Word'], keep_default_na=False)

最新更新