python - Python bson:如何在新列中创建 ObjectIds 列表
问题描述
我有一个 CSV,我需要在 python 中创建一列随机唯一的 MongoDB id。
这是我的 csv 文件:
import pandas as pd
df = pd.read_csv('file.csv', sep=';')
print(df)
Zone
Zone_1
Zone_2
我目前正在使用这行代码来生成唯一的ObjectId
-更新
import bson
x = bson.objectid.ObjectId()
df['objectids'] = x
print(df)
Zone; objectids
Zone_1; 5bce2e42f6738f20cc12518d
Zone_2; 5bce2e42f6738f20cc12518d
如何使 ObjectId 对于每一行都是唯一的?
解决方案
讨厌看到你被否决...堆栈溢出因重复的问题胡说八道而发疯,拒绝提供有用的帮助,然后因为你有勇气询问你不知道的事情而投反对票。
引用的问题显然与 ObjectIds 无关,更不用说将它们(或任何其他非 NumPy 或 Pandas 内部的对象)添加到数据框中。
您可能需要使用地图
这假设列“objectids”不是框架中的系列,而“区域”是框架中的系列
df['objectids'] = df['Zone'].map(lambda x: bson.objectid.ObjectId())
地图是戳系列中每条记录的超级有用(虽然很慢)的方法,并且作为连接外部功能的初始方法特别有用。
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html
推荐阅读
- arrays - 检查集合中是否存在项目的最快方法?
- grails - 将 Sql 查询转换为 Grails/Gorm 查询
- android - 如何在回收站视图上请求焦点编辑文本?
- vba - Item.Restrict 函数在使用 like 而不是 = 时不起作用
- javascript - 缩小 JS 会导致将外部 JS 嵌入我的网站时出现问题吗?如果是这样,我该如何解决这个问题?
- node.js - 使用带有 Sequelize.js 的节点将值附加到 where 条件
- android-studio - 与 API > 23 连接的低功耗蓝牙代码
- android - 如何在跨越视图完整宽度的水平回收器视图中添加动态数量的单元格?
- linux - 如何从用户空间访问输入设备驱动程序
- python - 如何在 NetworkX 中的节点上显示图像图标