Как преобразовать список в строку DataFrame в Python
Вы можете использовать следующий синтаксис для преобразования списка в строку DataFrame в Python:
#define list x = [4, 5, 8, 'A ' ' B'] #convert list to DataFrame df = pd.DataFrame(x). T
И вы можете использовать следующий синтаксис для преобразования списка списков в несколько строк DataFrame:
#define list of lists big_list = [[4, 5, 6, 'B'], [4, 2, 1, 'A'], [12, 4, 8, 'C']] #convert list of lists into DataFrame df = pd.DataFrame(columns=['col1', 'col2', 'col3', 'col4'], data=big_list)
В следующих примерах показано, как использовать каждую из этих функций на практике.
Пример 1: преобразование списка в строку DataFrame
В следующем коде показано, как преобразовать один список в DataFrame с одной строкой в Python:
import pandas as pd #define list x = [4, 5, 8, 'Mavericks'] #convert list to DataFrame df = pd.DataFrame(x). T #specify column names of DataFrame df.columns = ['Points', 'Assists', 'Rebounds', 'Team'] #display DataFrame print(df) Points Assists Rebounds Team 0 4 5 8 Mavericks
Пример 2. Преобразование списка списков в несколько строк DataFrame
Следующий код показывает, как преобразовать список списков в DataFrame с несколькими строками в Python:
import pandas as pd #define list of lists big_list = [[6, 7, 12, 'Mavericks'], [4, 2, 1, 'Lakers'], [12, 4, 8, 'Spurs']] #convert list of lists into DataFrame df = pd.DataFrame(columns=['Points', 'Assists', 'Rebounds', 'Team'], data=big_list) #display DataFrame print(df) Points Assists Rebounds Team 0 6 7 12 Mavericks 1 4 2 1 Lakers 2 12 4 8 Spurs
Мы можем проверить количество строк и столбцов результирующего DataFrame с помощью функции .shape() :
print(df.shape ) (3, 4)
Это говорит нам о том, что полученный DataFrame имеет 3 строки и 4 столбца.
Преобразование списка в строку методом join
Метод join в Python отвечает за объединение списка строк с помощью определенного указателя. Часто это используется при конвертации списка в строку. Например, так можно конвертировать список букв алфавита в разделенную запятыми строку для сохранения.
Метод принимает итерируемый объект в качестве аргумента, а поскольку список отвечает этим условиям, то его вполне можно использовать. Также список должен состоять из строк. Если попробовать использовать функцию для списка с другим содержимым, то результатом будет такое сообщение: TypeError: sequence item 0: expected str instance, int found .
Посмотрим на короткий пример объединения списка для создания строки.
vowels = ["a", "e", "i", "o", "u"] vowels_str = ",".join(vowels) print("Строка гласных:", vowels_str)Этот скрипт выдаст такой результат:
Строка гласных: a,e,i,o,uПочему join() — метод строки, а не списка?
Многие часто спрашивают, почему функция join() относится к строке, а не к списку. Разве такой синтаксис не было бы проще запомнить?
vowels_str = vowels.join(",")Это популярный вопрос на StackOverflow, и вот простой ответ на него:
Функция join() может использоваться с любым итерируемым объектом, но результатом всегда будет строка, поэтому и есть смысл иметь ее в качестве API строки.
Объединение списка с несколькими типами данных
Посмотрим на программу, где предпринимается попытка объединить элементы списка разных типов:
Преобразование вложенного списка в строку и обратно
Добрый день! Нужна помощь. Не как не могу реализовать преобразования списка (конвертированного в строку) в первоначальный облик, после данной операций. Проблема в том, что переменная для хранения списка в движке может хранить только либо число, либо число с плавающей точкой или строку по отдельности. Но необходимый список имеет все эти типы данных. Следовательно решил на хранение записывать все в строку, а уже для операций над списком возвращать его элементы в исходный вид. Ну восстановление по типам данных (числам и т.д.) думаю получится преобразовывать по индексу, т.к. вложенные списки будут иметь одинаковую структуру. Но перед этим нужно коректно все вернут в формат списка. И вот именно с этим и возникли проблемы.
Сами списки, которые должна хранить переменная имеют следующий вид:Winchester = ['Winchester', 'Weapon', 100, 0.40 , 13] Noel_revolver = ['Noel revolver', 'Weapon', 50, 0.40 , 8]если присвоить их переменной.
own['items'] = Winchester, Noel_revolver print(items)то вот как выводит их консоль:
[['Winchester', 'Weapon', 100, 0.4, 13], ['Noel revolver', 'Weapon', 50, 0.4, 8]]при этом переменная не сохраняется, т.к. может принять только однотипные списки. Поэтому приходится записывать в строку. И вот после этого и появляется необходимость преобразовывать ее обратно. Но как не пытался, коректно вернуть ее в список так и не получилось.
Вот команда которую использовал:items = items.split(',')А вот результат:
["['Lamp'", " 'Equipment'", ' 180', ' 0.3', ' 1]', "['Winchester'", " 'Weapon'", ' 100', ' 0.4', ' 13]', "['Noel revolver'", " 'Weapon'", ' 50', ' 0.4', ' 8]', '']Думаю тут сразу видно в чем проблема - в связи с тем, что скобочки оказываются внутри списка, про структуру ВЛОЖЕННОГО списка можно совсем забыть.
В общем выручайте кто может, люди добрые!Как преобразовать список в dataframe на Python
В этом руководстве мы увидим, как мы можем использовать список и преобразовать его в фрейм данных в Python. Но прежде чем начать с этого, давайте посмотрим, что такое список и что такое фреймы данных?
Список — это структура данных в Python, в которой все элементы заключены в квадратные скобки.
Colors=['Red', 'Blue', 'Green', 'Orange']Фреймы данных — это табличное представление данных в виде строк и столбцов.
Их можно использовать, импортировав pandas.
Теперь давайте посмотрим на различные методы преобразования списка в фрейм данных в Python.
- Использование DataFrame().
- Применение списка с именами индексов и столбцов.
- С помощью zip().
- Используя многомерный список.
- С помощью многомерного списка со столбцом и типом данных.
- Использование списков в словаре.
Использование pd.DataFrame()
В первом подходе мы использовали pd.DataFrame() для преобразования списка.
Следующая программа показывает, как это можно сделать:
import pandas as pd #list_values having strings list_values = ['English','Hindi','Mathematics','Science','Social Science'] df = pd.DataFrame(list_values) print(df)0 0 English 1 Hindi 2 Mathematics 3 Science 4 Social Science
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили список, значениями которого являются строки.
- Наконец, мы передали этот список в DataFrame() и отобразили результат.
Применение списка с именами индексов и столбцов
Во втором методе мы создадим фрейм данных, который имеет значение индекса и имя столбца.
Приведенная ниже программа иллюстрирует это:
import pandas as pd #list_values having strings list_values = ['English', 'Hindi', 'Mathematics', 'Science', 'Social Science'] df = pd.DataFrame(list_values,index = ['i', 'ii', 'iii', 'iv', 'v'], columns = ['Subjects']) print(df)Subjects i English ii Hindi iii Mathematics iv Science v Social Science
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили список со строками в качестве значений.
- Наконец, мы передали этот список в DataFrame() со списком значений индекса и именем столбца.
- При выполнении программы отображается желаемый результат.
С помощью zip()
В этом методе мы использовали zip().
Следующая программа показывает, как это можно сделать:
import pandas as pd #list_values having strings list_values = ['English', 'Hindi', 'Mathematics', 'Science', 'Social Science'] list_index = [20, 21, 22, 23, 24] df = pd.DataFrame(list(zip(list_values, list_index)), columns = ['Subjects', 'Code']) print(df)Subjects Code 0 English 20 1 Hindi 21 2 Mathematics 22 3 Science 23 4 Social Science 24Пришло время взглянуть на объяснение вышеупомянутой программы —
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили список со строками в качестве значений, а другой список содержит значения индекса.
- Наконец, мы передали list_values и list_index в zip-архиве внутри DataFrame() со списком значений индекса и именем столбца.
- При выполнении программы отображается желаемый результат.
Используя многомерный список
Здесь мы увидим, как многомерный список можно использовать для преобразования.
import pandas as pd #list_values having strings list_values = [['English', 4101], ['Hindi', 4102], ['Science', 4103], ['Mathematics', 4104], ['Computer', 4105]] df = pd.DataFrame(list_values, columns = ['Subject Name', 'Subject Code']) print(df)Subject Name Subject Code 0 English 4101 1 Hindi 4102 2 Science 4103 3 Mathematics 4104 4 Computer 4105
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили, что список содержит разные списки, и каждый список имеет строку и целочисленное значение.
- Наконец, мы передали list_values в pd.DataFrame() со списком имен столбцов.
- При выполнении программы отображается желаемый результат.
Использование многомерного списка со столбцом и типом данных
В этом подходе мы увидим небольшую вариацию вышеуказанной программы.
Следующая программа показывает, как это можно сделать:
import pandas as pd #list_values having strings list_values = [['Colin', 'Lassiter', 46], ['James', 'Gomez', 24], ['Sara', 'Charles', 34], ['Raven', 'Stewart', 24], ['Oliver', 'Osment', 21]] df = pd.DataFrame(list_values, columns = ['First_Name', 'Last_Name', 'Age'], dtype = float) print(df)First_Name Last_Name Age 0 Colin Lassiter 46.0 1 James Gomez 24.0 2 Sara Charles 34.0 3 Raven Stewart 24.0 4 Oliver Osment 21.0
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили, что список содержит разные списки, и каждый список имеет два строковых значения (имя и фамилию) и целочисленное значение (возраст).
- Наконец, мы передали list_values в DataFrame() со списком имен столбцов и типом данных.
- При выполнении программы отображается желаемый результат.
Использование списков в словаре
Наконец, в последнем методе мы увидим, как списки можно использовать со словарями и преобразовать список в фрейм данных.
Приведенная ниже программа иллюстрирует то же самое.
import pandas as pd #list_values having strings f_name = ['Colin', 'James', 'Sara', 'Raven', 'Oliver'] l_name = ['Lassiter', 'Gomez', 'Charles', 'Stewart', 'Osment'] age = [46, 24, 34, 24, 21] dict = df = pd.DataFrame(dict) print(df)First Name Last_Name Age 0 Colin Lassiter 46 1 James Gomez 24 2 Sara Charles 34 3 Raven Stewart 24 4 Oliver Osment 21
- На первом этапе мы импортировали библиотеку pandas.
- После этого мы объявили три списка, а именно f_name, l_name и age.
- На следующем этапе мы использовали эти списки как значения для ключей словаря.
- Наконец, мы передали dict в DataFrame().
- При выполнении программы отображается желаемый результат.
Вывод
В этом руководстве мы познакомились с некоторыми интересными методами преобразования списка в фрейм данных в Python.
