首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试打开.bson文件并读取给熊猫df,但是第一次使用.bson获取'bson.errors.InvalidBSON: objsize太大‘

尝试打开.bson文件并读取给熊猫df,但是第一次使用.bson获取'bson.errors.InvalidBSON: objsize太大‘
EN

Stack Overflow用户
提问于 2022-06-11 13:40:21
回答 1查看 145关注 0票数 0

#这是我的代码

代码语言:javascript
运行
复制
import pandas as pd
import bson

FILE="users_(1).bson"

with open(FILE,'rb') as f:
    data = bson.decode_all(f.read())

main_df=pd.DataFrame(data)
main_df.describe()

#这是我的.bson文件

代码语言:javascript
运行
复制
[{'_id': ObjectId('999f24f260f653401b'),
    'isV2': False,
    'isBeingMigratedToV2': False,
    'firstName': 'Jezz',
    'lastName': 'Bezos',
    'subscription': {'_id': ObjectId('999f24f260f653401b'),
     'chargebeeId': 'AzZdd6T847kHQ',
     'currencyCode': 'EUR',
     'customerId': 'AzZdd6T847kHQ',
     'nextBillingAt': datetime.datetime(2022, 7, 7, 10, 14, 6),
     'numberOfMonthsPaid': 1,
     'planId': 'booster-v3-eur',
     'startedAt': datetime.datetime(2022, 6, 7, 10, 14, 6),
     'addons': [],
     'campaign': None,
     'maskedCardNumber': '************1234'},
    'email': 'jeffbezos@gmail.com',
    'groupName': None,
    'username': 'jeffbezy',
    'country': 'DE'},
   {'_id': ObjectId('999f242660f653401b'),
    'isV2': False,
    'isBeingMigratedToV2': False,
    'firstName': 'Caterina',
    'lastName': 'Fake',
    'subscription': {'_id': ObjectId('999f242660f653401b'),
     'chargebeeId': '16CGLYT846t99',
     'currencyCode': 'GBP',
     'customerId': '16CGLYT846t99',
     'nextBillingAt': datetime.datetime(2022, 7, 7, 10, 10, 41),
     'numberOfMonthsPaid': 1,
     'planId': 'personal-v3-gbp',
     'startedAt': datetime.datetime(2022, 6, 7, 10, 10, 41),
     'addons': [],
     'campaign': None,
     'maskedCardNumber': '************4311'},
    'email': 'caty.fake@gmail.com',
    'groupName': None,
    'username': 'cfake',
    'country': 'GB'}]

我知道错误了

代码语言:javascript
运行
复制
'bson.errors.InvalidBSON: objsize too large'

这跟约会时间有关吗?它是否是.bson文件的结构,在这个文件中存在了几个小时,并且似乎看不到错误。我知道如何使用json,并试图将其转换为json,但没有成功。如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 15:31:58

如果这里的主要目标是将数据读入熊猫DataFrame,那么您确实可以将数据格式化为json并使用bson.json_util.loads

代码语言:javascript
运行
复制
import pandas as pd
from bson.json_util import loads

with open(filepath,'r') as f:
    data = f.read()

mapper = {
    '\'': '"',   # using double quotes
    'False': 'false',
    'None': '\"None\"',  # double quotes around None
    # modifying the ObjectIds and timestamps
    '("': '(', 
    '")': ')', 
    ')': ')"',
    'ObjectId': '"ObjectId',
    'datetime.datetime': '"datetime.datetime'
}
for k, v in mapper.items():
    data = data.replace(k, v)

data = loads(data)
df = pd.DataFrame(data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72584830

复制
相关文章

相似问题

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