为了账号安全,请及时绑定邮箱和手机立即绑定

在 Pandas DataFrame 列中查找 Anagram

在 Pandas DataFrame 列中查找 Anagram

拉莫斯之舞 2023-10-31 21:41:57
给定数据框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”对象不可调用
查看完整描述

2 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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


查看完整回答
反对 回复 2023-10-31
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这里的问题是您正在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)


查看完整回答
反对 回复 2023-10-31
  • 2 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信