Как создать функцию, которая позволит мне создать список двумерных кортежей с этим фреймом данных? - PullRequest
0 голосов
/ 16 апреля 2020
 df1=a[['genres','imdb_score']]
 df1


        genres                      imdb_score
0   Action|Adventure|Fantasy|Sci-Fi     7.9
1   Action|Adventure|Fantasy            7.1
2   Action|Adventure|Thriller           6.8
3   Action|Thriller                     8.5
4   Documentary                         7.1
    ... ... ...
5038  Comedy|Drama                      7.7
5039  Crime|Drama|Mystery|Thriller      7.5
5040  Drama|Horror|Thriller             6.3
5041  Comedy|Drama|Romance              6.3
5042  Documentary                       6.6

 def tuples(p):
list=[]
t=df1.genres.str.split('|').join(df1['imdb_score'])
list.append(t)
return list

Это то, что я сделал, и это не работает, и я хочу получить вещь ниже. Большое спасибо.

       [('Action', 7.9) ('Adventure', 7.9) ('Fantasy', 7.9) ('Sci-Fi', 7.9)] 

1 Ответ

1 голос
/ 16 апреля 2020

Вот функция, которая делает то, что вы хотите:

def get_columns_as_tuples(df, indices):
    return [[(genre, score) for 
              genre in genres.split('|')] for 
              _, (genres, score) in df.loc[indices].iterrows()]

Возвращает список списков, потому что позволяет вам выбирать, из каких индексов получать данные.

Примеры:

# get data from rows whose index is in [0]
>>> get_columns_as_tuples(df=df, indices=[0])
[[('Action', 7.9), ('Adventure', 7.9), ('Fantasy', 7.9), ('Sci-Fi', 7.9)]]

# get data from rows whose index is in [0, 1]
>>> get_columns_as_tuples(df=df, indices=[0, 1])
[[('Action', 7.9), ('Adventure', 7.9), ('Fantasy', 7.9), ('Sci-Fi', 7.9)],
 [('Action', 7.1), ('Adventure', 7.1), ('Fantasy', 7.1)]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...