Добавить данные в список из панд - PullRequest
0 голосов
/ 18 февраля 2019

Python новорожденный здесь, я хочу извлечь значения из фрейма данных в список, но я получаю дополнительную информацию, которая мне не нужна.Есть ли лучший способ сделать это:

rating1 = []
rating2 = []
for value in person1["Movie"]:
    for value2 in person2["Movie"]:
        if value == value2:
            rating1.append(person1[person1["Movie"] == value]["Rating"])
            rating2.append(person2[person2["Movie"] == value2]["Rating"])

Когда я печатаю рейтинг1, я получаю это:

print(rating1)
[0    2.5
Name: Rating, dtype: float64, 1    3.5
Name: Rating, dtype: float64, 2    2.5
Name: Rating, dtype: float64, 5    3.0
Name: Rating, dtype: float64, 22    3.5
Name: Rating, dtype: float64, 23    3.0
Name: Rating, dtype: float64]

Моя цель - только извлечь рейтинги без индекса и другой информации для использованиядля расчета манхэттенского и евклидова расстояния.Как то так:

[2.5, 3.5, 2.5, 3.0, 3.5, 3.0]

1 Ответ

0 голосов
/ 18 февраля 2019

Я нашел ответ для своей проблемы, здесь он для дальнейшего использования.Использовал метод добавления, изменил его, чтобы расширить метод, и результат - именно то, что я хочу.

rating1 = []
rating2 = []
for value in person1["Movie"]:
    for value2 in person2["Movie"]:
        if value == value2:
            rating1.extend(person1[person1["Movie"] == value]["Rating"])
            rating2.extend(person2[person2["Movie"] == value2]["Rating"])

print(rating1)
>>>[2.5, 3.5, 2.5, 3.0, 3.5, 3.0]

Таким образом, я могу вызывать евклидовы и манхэттенские методы следующим образом:

from scipy.spatial import distance
r1 = np.array(rating1)
r2 = np.array(rating2)

euclidean = distance.euclidean(r1, r2)
manhattan = distance.cityblock(r1, r2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...