我在名为sf的word_count
中有一个名为SFrame
的SArray。 word_count
SArray中的每一行都包含一个字典。
我有一个名为selected_words
的数组
我试图循环遍历每一列,以查看“selected_words”中的哪些单词出现在列中。如果它出现我取值并将其写入新列。
这是一个只有一个词('伟大')的例子:
selected_words = ['awesome ', 'great']
def word_count(row):
if 'great' in row:
sf['great']=row['great']
else:
abc="a" #nothing should happen
sf['word_count'].apply(word_count)
+-------------------------------+
| word_count |
+-------------------------------+
| {'and': 5, '6': 1, 'stink'... |
| {'and': 3, 'love': 1, 'it'... |
| {'and': 2, 'quilt': 1, 'it... |
| {'ingenious': 1, 'and': 3,... |
| {'and': 2, 'parents!!': 1,... |
| {'and': 2, 'this': 2, 'her... |
| {'shop': 1, 'noble': 1, 'i... |
| {'and': 2, 'all': 1, 'righ... |
| {'and': 1, 'help': 1, 'giv... |
| {'journal.': 1, 'nanny': 1... |
+-------------------------------+
print sf['great']
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... ]
据我所知,相同的值(1)会应用于每一行,但我只需要在实际找到“great”一词的那一行。 我怎么能这样做?
答案 0 :(得分:2)
代码中的问题是,在每次调用函数word_count后,您正在更改完整列sf ['great']。这是另一种方法:
def word_count(d):
return d['great'] if 'great' in d else 0
然后将此函数应用于sf ['word_count']列:
sf['great'] = sf['word_count'].apply(word_count)