Питон: преобразовать переменные в правильный формат для DataFrame

Вопрос или проблема

У меня есть 3 переменных, которые я хотел бы использовать для создания набора данных, но поскольку они имеют странную форму/формат, пока я не имел успеха. Я совсем новичок в этом и буду очень благодарен за любую помощь!!

3 переменные, которые у меня есть:

print(newspaper)

[‘Bolero’]
[‘Schweizer Illustrierte Style’]
[‘Bolero’]

print(title)

[‘Schönheit und Tragik’]
[‘magie pur’]
[‘Das sind unsere Favoriten’]

print(pubDate)

[‘2007-01-01’]
[‘2007-01-01’]
[‘2007-01-01’]

Похоже, что все переменные – это списки списков, но я не совсем уверен. Однако, поскольку данные были собраны с частного сайта, я не могу опубликовать весь код здесь, но надеюсь, что этого достаточно, чтобы понять, в чем проблема с форматом этих переменных.

Что я хотел бы получить, так это набор данных в следующем формате:

Газета Название Дата публикации
Bolero Schönheit und Tragik 2007-01-01
Schweizer Illustrierte Style magie pur 2007-01-01
Bolero. Das sind unsere Favoriten 2007-01-01

Сначала вам нужно преобразовать списки списков в список.

По ссылке вы можете преобразовать список списков в список, объявив следующую функцию.

flatten = lambda t: [item for sublist in t for item in sublist]

Теперь все, что вам нужно, это создать датафрейм, используя созданные списки.

data = {"Газета":flatten(newspaper), "Название": flatten(title), "Дата публикации": flatten(pubDate)}
pd.DataFrame.from_dict(data)

Ответ или решение

Чтобы эффективно преобразовать ваши переменные в правильный формат для создания DataFrame в Python с использованием библиотеки Pandas, рассмотрим пошаговое руководство. Начнем с анализа предоставленных вами данных.

Шаг 1: Понимание структуры данных

Ваши переменные newspaper, title и pubDate представлены как списки списков. Это означает, что каждый из них содержит вложенные списки, которые нужно "развернуть" в единые списки. Например, у вас есть:

newspaper = [['Bolero'], ['Schweizer Illustrierte Style'], ['Bolero']]
title = [['Schönheit und Tragik'], ['magie pur'], ['Das sind unsere Favoriten']]
pubDate = [['2007-01-01'], ['2007-01-01'], ['2007-01-01']]

Мы целимся в то, чтобы получить плоские списки следующего вида:

  • newspapers: ['Bolero', 'Schweizer Illustrierte Style', 'Bolero']
  • titles: ['Schönheit und Tragik', 'magie pur', 'Das sind unsere Favoriten']
  • pubDates: ['2007-01-01', '2007-01-01', '2007-01-01']

Шаг 2: Преобразование в плоские списки

Для преобразования списков списков в плоские списки мы можем использовать лямбда-функцию, как вы уже упомянули. Вот код для этого:

flatten = lambda t: [item for sublist in t for item in sublist]

newspaper_flat = flatten(newspaper)
title_flat = flatten(title)
pubDate_flat = flatten(pubDate)

Теперь для каждой переменной мы создали плоские версии.

Шаг 3: Создание DataFrame

Теперь, когда у нас есть плоские списки, мы можем использовать библиотеку Pandas для создания DataFrame. Убедитесь, что вы импортировали Pandas перед использованием.

import pandas as pd

data = {
    "Newspaper": newspaper_flat,
    "Title": title_flat,
    "PubDate": pubDate_flat
}

df = pd.DataFrame(data)

Шаг 4: Результат

Теперь переменная df будет содержать ваш DataFrame в нужном формате:

                 Newspaper                        Title      PubDate
0                     Bolero           Schönheit und Tragik  2007-01-01
1     Schweizer Illustrierte Style                     magie pur  2007-01-01
2                     Bolero      Das sind unsere Favoriten  2007-01-01

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...