【问题标题】:In Python, How do you use a loop to create a dataframe?在 Python 中,如何使用循环来创建数据框?
【发布时间】:2022-01-20 15:17:21
【问题描述】:

我最近从 youtube API 中提取了数据,并且正在尝试使用该信息创建一个数据框。

当我使用“打印”函数遍历每个项目时,我会为每个变量获得 25 行输出(这是我在创建的数据框中想要的)。

如何使用此信息而不是数据框中的 1 行来创建包含 25 行的新数据框?

当我像这样遍历每个项目时:

df = pd.DataFrame(columns = ['video_title', 'video_id', 'date_created'])

#For Loop to Create columns for DataFrame    

x=0

while x < len(response['items']):
    video_title= response['items'][x]['snippet']['title']
    video_id= response['items'][x]['id']['videoId']
    date_created= response['items'][x]['snippet']['publishedAt']
    x=x+1

#print(video_title, video_id)
df = df.append({'video_title': video_title,'video_id': video_id,
            'date_created': date_created}, ignore_index=True)

=========答案更新========== 感谢所有提供意见的人!!!

创建数据框的代码是:

import pandas as pd

x=0
video_title = []
video_id = []
date_created = []

while x < len(response['items']):
    video_title.append (response['items'][x]['snippet'] 
    ['title'])
    video_id.append (response['items'][x]['id']['videoId'])
    date_created.append (response['items'][x]['snippet']. 
    ['publishedAt'])
    x=x+1

#print(video_title, video_id)
df = pd.DataFrame({'video_title': video_title,'video_id': 
video_id, 'date_created': date_created})

【问题讨论】:

  • 您能否提供一个输入示例和您想要的输出示例?
  • 你可以,在你的while循环yt_data_list=[]之前创建一个列表,并在你的while循环中将数据附加到列表yt_data_list.append({'video_title': 't2','video_id': '1234', 'date_created': '12:33'}),然后在while循环之后,构建数据框df=pd.DataFrame(yt_data_list)

标签: python dataframe loops


【解决方案1】:

根据我对 youtube API 返回对象的了解,“title”、“videoId”和“publishedAt”的值是字符串。 从这些字符串生成单个 df 的策略是:

  1. 将这些字符串存储在一个列表中。因此,您将拥有三个列表。
  2. 将列表转换为 df

根据检索到的 x 个值,您将获得一个包含 x 行的 df。

例子:

import pandas as pd

x=0
video_title = []
video_id = []
date_created = []

while x < len(response['items']):
    video_title.append (response['items'][x]['snippet']['title'])
    video_id.append (response['items'][x]['id']['videoId'])
    date_created.append (response['items'][x]['snippet']['publishedAt'])
    x=x+1

#print(video_title, video_id)
df = pd.DataFrame({'video_title': video_title,'video_id': 
video_id, 'date_created': date_created})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 2022-11-30
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多