Я пытаюсь использовать оператор «if» внутри цикла «for», чтобы проверить, соответствует ли индекс текущего элемента в цикле (индекс серии pandas, содержащей элемент), одному из индексов другой серии, но при этом возникает ValueError. Это строка кода, которая вызывает проблемы:
if(ICM_items[ICM_items['track_id'] == i].index[0] in ICM_tgt_items.index.values.flatten().tolist()):
Я попытался изменить обе стороны оператора «in» случайными целыми числами или списками, и это работает, также два элемента построены правильно, но при объединении в операторе они вызывают ошибку.
Надеюсь, кто-нибудь может дать мне несколько советов о том, в чем проблема или альтернативный способ выполнить ту же задачу.
ICM_items и ICM_tgt_items являются pandas.Series
Ниже ошибка консоли:
Traceback (most recent call last):
File "/Users/LucaButera/git/rschallenge/similarity_to_recommandable_builder.py", line 27, in <module>
dot[ICM_tgt_items[ICM_items[ICM_items['track_id'] == i].index[0]]] = 0
File "/Users/LucaButera/anaconda/lib/python3.6/site-packages/pandas/core/series.py", line 603, in __getitem__
result = self.index.get_value(self, key)
File "/Users/LucaButera/anaconda/lib/python3.6/site-packages/pandas/indexes/base.py", line 2169, in get_value
tz=getattr(series.dtype, 'tz', None))
File "pandas/index.pyx", line 98, in pandas.index.IndexEngine.get_value (pandas/index.c:3557)
File "pandas/index.pyx", line 106, in pandas.index.IndexEngine.get_value (pandas/index.c:3240)
File "pandas/index.pyx", line 147, in pandas.index.IndexEngine.get_loc (pandas/index.c:4194)
File "pandas/index.pyx", line 280, in pandas.index.IndexEngine._ensure_mapping_populated (pandas/index.c:6150)
File "pandas/src/hashtable_class_helper.pxi", line 446, in pandas.hashtable.Int64HashTable.map_locations (pandas/hashtable.c:9261)
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
[Finished in 1.26s]
ICM_items
, соответствующийtrack_id == i
? Что делать, если возвращается несколько индексов? - person andrew_reece   schedule 09.10.2017