在 Pandas DataFrame 列中查找 Anagram

给定数据框


df = pd.DataFrame({'word1': ['elvis', 'lease', 'admirer'], 'word2': ['lives', 'sale', 'married']})

如何添加第三列,根据同一行中的两个单词是否是字谜词返回 True 或 False?


我已经编写了这个函数,当我将它应用于 df.


def anagram(word1, word2):


    word1_lst = [l for l in word1]

    word2_lst = [i for i in word2] 


    return sorted(word1_lst) == sorted(word2_lst)



df['Anagram'] = df.apply(anagram(df['word1'], df['word2']), axis = 1)

类型错误:“bool”对象不可调用


拉莫斯之舞
浏览 83回答 2
2回答

汪汪一只猫

df = pd.DataFrame({'word1': ['elvis', 'lease', 'admirer'], 'word2': ['lives', 'sale', 'married']}) df['Anagram'] = df.word1.apply(sorted) == df.word2.apply(sorted)

繁星淼淼

这里的问题是您正在df.apply()使用参数进行调用anagram(df['word1'], df['word2')这是一个布尔值,而不是一个函数和axis = 1要修复此问题,请像这样更改您的函数:def anagram(row):     word1_lst = [l for l in row['word1']]     word2_lst = [i for i in row['word2']]         return sorted(word1_lst) == sorted(word2_lst)然后用函数名调用方法,而不是结果df['Anagram'] = df.apply(anagram, axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python