#这是我的代码
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文件
[{'_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': '[email protected]', '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': '[email protected]', 'groupName': None, 'username': 'cfake', 'country': 'GB'}]
我知道错误了
'bson.errors.InvalidBSON: objsize too large'
这跟约会时间有关吗?它是否是.bson文件的结构,在这个文件中存在了几个小时,并且似乎看不到错误。我知道如何使用json,并试图将其转换为json,但没有成功。如有任何建议,将不胜感激。
上云精选
2核2G云服务器 每月9.33元起,个人开发者专属3年机 低至2.3折
如果这里的主要目标是将数据读入熊猫DataFrame,那么您确实可以将数据格式化为json并使用 bson.json_util.loads 。
bson.json_util.loads
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'