我找不到我的问题的类似答案,所以我们开始:我已爬网一个网站,并将数据以以下格式存储在CSV文件中:
data = [{"has_media": "false", "tags": ["e", "x", "y", "s", "f", "f"], "img_urls": [], "is_replied": "false", "is_reply_to": "false", "likes": 0, "links": [], "parent_id": "", "replies": 0, "reply_to_users": [], "comments": 1, "screen_name": "name", "text": "This is plain text retrieved from the webpage and a link http://ht.ly/25DQR and a hashtag #ecar", "text_html": "<p class=\"><s>#</s><b>electric</b></a></p>", "timestamp": "2010-08-01T09:37:20", "timestamp_epochs": 3749793792, "_id": "28829932", "_url": "/user/status/17479367564", "user_id": "1038493493", "username": "username", "video_url": ""}, {"has_media": "false", "hashtags": [""e", "o", "y", "p", "r", "s"], "img_urls": [], "is_replied": "false", "is_reply_to": "false", "likes": 0, "links": [], "parent_id": "", "replies": 0, "reply_to_users": [], "comments": 1, "screen_name": "user", "text": "New cooperative project: This is plain text retrieved from the webpage and a link http://ht.ly/25DQR and a hashtag #hello", "text_html": "<p class=\</b></a></p>", "timestamp": "2011-05-01T09:50:11", "timestamp_epochs": 18734839, "_id": "2982892", "_url": "/user/status/83982893", "user_id": "29983882", "username": "user", "video_url": ""}]
我想从中创建一个数据框,其中每个字典是新行,而每个键表示一个列。
我已经尝试过了,但是它只给我一栏,而且似乎不认识字典。
import pandas as pd
file = data.split(',')
pd.DataFrame.from_dict(file)
非常感谢您的帮助,因为我是编码的新手,可能需要一些帮助才能使它变得更好。
谢谢!
很简单。您可以使用:
df = pd.DataFrame(data)
另外,您还可以使用以下方法从文件中下载它:
df = pd.read_json(filename, orient='records')
您在上面的代码中显示了词典列表。产生Pandas数据框(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)要求数据输入为字典类型,而不是列表类型,因此您必须运行
df1 = pd.DataFrame(data[0])
df2 = pd.DataFrame(data[1])
或者您也可以摆脱列表符号,将两个词典合并为一个更大的词典。
这仍将编译以产生错误,但是,'所有数组的长度必须相同'。熊猫希望将数组的每个元素赋予数据框内的新行。在您的示例中,您有"links": []
一个空数组,以及"tags": ["e", "x", "y", "s", "f", "f"]
一个具有多个条目的数组(这些只是两个示例)。因此,您需要执行一些数据准备工作以确保所有阵列的长度相同。
鉴于您的大多数条目只有一个元素,我建议您将null
值放入空数组"links": [np.nan]
或只是一个空字符串。对于具有多个条目(例如“标签”)的数组,您可以尝试将其存储为只有一个值(该值是原始数组!)的数组。 “标签”:[[“ e”,“ x”,“ y”,“ s”,“ f”,“ f”]]
您的代码仍然存在语法错误,但是在任何此操作之前都需要修复!