这是来自DataQuest的练习。数据集可以在这里找到:https://www.reddit.com/r/datasets/comments/1uyd0t/200000_jeopardy_questions_in_a_json_file
我有一个函数,该函数可以从根本上找出问题中某个单词出现危险的次数。
def AnsFromQ(row):
split_answer = row['clean_answer'].split(" ")
split_question = row['clean_question'].split(" ")
match_count = 0
if 'the' in split_answer:
split_answer.remove("the")
if len(split_answer) == 0:
return 0
for word in split_answer:
if word in split_question:
match_count += 1
return match_count / len(split_answer)
jeopardy['answer_in_question'] = jeopardy.apply(AnsFromQ, axis=1)
我的问题与使用row['clean_answer']
的第2行和第3行有关。 python如何知道我要引用单元格(行和列的相交)而不使用jeopardy.loc[row,['clean_answer']]
之类的东西?我可以为row
使用任何变量。
此代码有效。我只是不知道为什么。如果我将代码与loc
一起使用,则会在jupyter中警告我说我需要使用reindex()
。
答案 0 :(得分:0)
使用jeopardy.apply(AnsFromQ, axis=1)
时,您正在将AnsFromQ
函数应用于数据框的每一行。 row
变量为您提供了代表当前行的数据框的一部分。为了使用jeopardy.loc[row,['clean_answer']]
,row
必须是jeopardy
的索引中的值。
换句话说,row
是pd.Series
,可为您提供每一行的视图。使用row['clean_answer']
对其进行索引将为您提供当前行中该列索引的单元格。