pd.DataFrame
идеально сочетается с namedtuple
и фактически создает столбцы.
Пример данных:
In [21]: Video = namedtuple("Video", "video_id title duration views thumbnail De
...: scription")
In [22]: In [20]: pd.DataFrame(data=[Video(1, 'Vid Title', 5, 10, 'Thumb',' Des'
...: )])
Out[22]:
video_id title duration views thumbnail Description
0 1 Vid Title 5 10 Thumb Des
Поскольку ваша функция на самом деле не возвращает df
и не использует его где-либо еще в коде, как вы можете быть уверены, что она пуста?
Обновление
Вам просто нужно отредактировать возвращаемый результат parse_video_div
, чтобы вернуть pd.DataFrame
, и объединить список в одну pd.DataFrame
в get_videos
функцию.
Вот выделенные правки.
def parse_video_div(div):
#####
return pd.DataFrame(data=[Video(video_id, title, duration, views, thumbnail, Description)])
# shorter version
# return pd.DataFrame(data=[l])
def get_videos(username):
####
videos_df = pd.concat(videos, ignore_index=True)
return videos_df # return the DataFrame
Вам нужна функция конкатенации в конце. в parse_page_div
вы можете вернуть любой ввод pd.DataFrame
, пусть это будет dict
, pd.Series
, namedtuple
или даже список. В этом примере я выбрал pd.DataFrame
, чтобы упростить процесс, однако с точки зрения производительности он может добавить несколько миллисекунд к вашей обработке.