【发布时间】:2013-09-10 23:55:56
【问题描述】:
TL;DR 如果 Pandas DataFrame 中加载的字段本身包含 JSON 文档,如何以类似 Pandas 的方式使用它们?
目前,我直接将 Twitter 库 (twython) 中的 json/字典结果转储到 Mongo 集合(此处称为用户)中。
from twython import Twython
from pymongo import MongoClient
tw = Twython(...<auth>...)
# Using mongo as object storage
client = MongoClient()
db = client.twitter
user_coll = db.users
user_batch = ... # collection of user ids
user_dict_batch = tw.lookup_user(user_id=user_batch)
for user_dict in user_dict_batch:
if(user_coll.find_one({"id":user_dict['id']}) == None):
user_coll.insert(user_dict)
填充此数据库后,我将文档读入 Pandas:
# Pull straight from mongo to pandas
cursor = user_coll.find()
df = pandas.DataFrame(list(cursor))
这就像魔术一样:
我希望能够修改“状态”字段 Pandas 样式(直接访问属性)。有什么办法吗?
编辑:类似于 df['status:text']。状态具有诸如“文本”、“已创建_at”之类的字段。一种选择是扁平化/规范化这个 json 字段,例如 this pull request Wes McKinney 正在研究。
【问题讨论】:
-
你能举一个你真正想做的例子吗?您展示了
df['status']列,但您想用它做什么? -
FWIW 有一个 PR 正在为此工作:github.com/pydata/pandas/pull/4007
-
df.status的元素中是否有嵌套记录? -
@BrenBarn - 我希望能够在这些字段中进行选择,有点像 df[df['status']['favorited'] == False]。
-
@PhillipCloud - 很高兴看到公关!此外,看起来其他人在本期中使用 Twitter API 做同样类型的事情:github.com/pydata/pandas/issues/1067。
标签: python json mongodb twitter pandas