создание списка кортежей из записей данных - PullRequest
2 голосов
/ 18 апреля 2020

У меня есть фрейм данных df:

movie_title          director_name     ...   oscar_wins   oscar_nominees
El Mariachi          Robert Rodriguez  ...       0             0
My Date with Drew    Jon Gunn          ...       0             0

Я хочу создать список кортежей, в котором каждый кортеж - это одна строка фрейма данных. Таким образом, результат должен выглядеть следующим образом:

[(El Mariachi, Robert Rodriguez, ... , 0, 0), (My Date with Drew, Jon Gunn, ..., 0, 0) ...]

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

list(zip(range(len(df)), column_names)

Хотя я знаю почему это не работает, я не уверен, как добиться того, что я хочу. Есть ли кто-нибудь, кто может помочь мне или предоставить мне исправление?

Спасибо и высоко ценим!

Ответы [ 4 ]

3 голосов
/ 18 апреля 2020

Решение с пониманием списка:

L = [tuple(x) for x in df.values.tolist()]
print (L)
[('El Mariachi', 'Robert Rodriguez', 0, 0), ('My Date with Drew', 'Jon Gunn', 0, 0)]
2 голосов
/ 18 апреля 2020

Вы также можете сделать это:

[tuple(x) for x in df.to_numpy()]
# [('El Mariachi', 'Robert Rodriguez', 0, 0), ('My Date with Drew', 'Jon Gunn', 0, 0)]

Самый быстрый способ будет с использованием to_records():

df.to_records(index=False).tolist()
1 голос
/ 18 апреля 2020
 all_rows=[]
 for index, row in df.iterrows():
        all_rows.append(tuple(row))

Объяснение: Используя for l oop & iterrows (), можно выполнять итерации по фрейму данных. Два элемента index (представляет индекс df) & row (отображает строку образца, которая является списком). Теперь, используя tuple (), преобразуйте эту строку (объект типа списка) в tuple и добавьте в новый список 'all_rows'

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

Просто верните значения из списка и map внутренние списки в кортежи:

list(map(tuple,df.values.tolist()))
# [('El Mariachi', 'Robert Rodriguez', 0, 0), ('My Date with Drew', 'Jon Gunn', 0, 0)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...