我不知道为什么这个操作错了:
songs_genres = np.array(data['genre_ids'].apply(lambda x: int(v) for v in str(x).split('|')))
这是日志:
Traceback (most recent call last):
File "FeatureEngineering.py", line 66, in <module>
data = FeatureEncoding(data, train_dix, test_idx)
File "FeatureEngineering.py", line 30, in FeatureEncoding
songs_genres = np.array(data['genre_ids'].apply(lambda x: int(v) for v in str(x).split('|')))
NameError: global name 'x' is not defined
答案 0 :(得分:0)
如果你使用类似的列表理解,那很明显:
>>> [lambda x: int(x) for _ in range(3)]
[<function __main__.<listcomp>.<lambda>>,
<function __main__.<listcomp>.<lambda>>,
<function __main__.<listcomp>.<lambda>>]
所以你传递给apply
的是多个lambda
。 lambda
的数量取决于str(x).split('|')
。但这失败了,因为当您将其传递给apply
时,名称x
尚未定义。这就是异常的原因。
你还没有说出你想做什么,但似乎需要这样的事情:
data['genre_ids'].apply(lambda x: [int(v) for v in str(x).split('|')])
这会为每个条目创建一个包含整数的列表。