Вопрос или проблема
У меня есть 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.