首页 > 解决方案 > 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 对于每一行都是唯一的?

标签: pythonpymongobson

解决方案


讨厌看到你被否决...堆栈溢出因重复的问题胡说八道而发疯,拒绝提供有用的帮助,然后因为你有勇气询问你不知道的事情而投反对票。

引用的问题显然与 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


推荐阅读