首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据框中的JSON对象列表已转换为字符串

数据框中的JSON对象列表已转换为字符串
EN

Stack Overflow用户
提问于 2021-07-07 22:47:25
回答 1查看 30关注 0票数 0

我有下面的数据框架。最后一列"entities“是一个字典列表。

代码语言:javascript
复制
dict0 = [{'name': 'require-once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.014624}, {'name': 'require_once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.008366},{'name': 'funkytaurusmedia.com/includes/header.php', 'type': 'UNKNOWN', 'mid': '/m/02dnj_', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/Header_(computing)', 'numMentions': 2, 'avgSalience': 0.007887},{'name': 'public_html', 'type': 'UNKNOWN', 'mid': '/m/03g20', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/HTML', 'numMentions': 28, 'avgSalience': 0.007139}, {'name': 'public_html', 'type': 'PERSON', 'mid': None, 'wikipediaUrl': None, 'numMentions': 1, 'avgSalience': 0.007139}]
dict1 = [{'name': 'require-once1', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.014624}, {'name': 'require_once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.008366},{'name': 'funkytaurusmedia.com/includes/header.php', 'type': 'UNKNOWN', 'mid': '/m/02dnj_', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/Header_(computing)', 'numMentions': 2, 'avgSalience': 0.007887},{'name': 'public_html', 'type': 'UNKNOWN', 'mid': '/m/03g20', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/HTML', 'numMentions': 28, 'avgSalience': 0.007139}]
df = pd.DataFrame({"date":{0:1522254600000, 1:1132254600000 },"url":{0:"http", 1:"http1"},"lang":{0:"de", 1:"de"},"polarity":{0:-0.8, 1:0.8},"magnitude":{0:10.3, 1:11},"score":{0:-0.5, 1:0.5},"entities": {0:dict0, 1:dict1}})
df

我使用以下代码行将此数据保存到csv文件中。

代码语言:javascript
复制
df.to_csv('GEG.csv', index = False, header=True)

然后,我将它上传到驱动器中,并使用以下代码从colab笔记本中读取它。

代码语言:javascript
复制
dataFrame = pd.read_csv("drive/MyDrive/GEG.csv")

读完后,我试图对列"entities“进行一些处理,但我发现在保存和读取数据的过程中,最后一列被转换为字符串。有没有办法在不改变最后一列(字典列表)的格式的情况下保存此数据框并再次读取它?

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 23:04:58

这里基本上有两个选择。

您可以对数据帧进行筛选,然后当您重新加载它时,它将恢复原样。

我更喜欢使用json.loads来处理这类任务。

在读取csv之后,将json.loads应用于其中包含有效json的列。

代码语言:javascript
复制
import json
df['col_with_json_str'] = df['col_with_json_str'].apply(lambda x: json.loads(x))

如果您的字典不是有效的json,则需要使用ast.literal_eval。这仍然比eval更好,您不应该使用eval。

代码语言:javascript
复制
import ast
dataFrame = pd.read_csv("GEG.csv")
dataFrame['entities'] = dataFrame['entities'].apply(ast.literal_eval)

不要使用eval,除非你真的不关心安全性。请参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#never_use_eval

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68288246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档