如何将 pandas series 元素转换为字符串

3
我有一个pandas数据框,其中存储了mongoDB的ObjectIDs。我想从mongoDB获取新文档,因此我使用了存储在pandas数据框中的最后一个文档ObjectId。但是当我查询数据库时,它给了我一个错误。

这是我的操作:

df = pd.DataFrame(list(db.dataset2.find()))

last_inserted_id = (df['_id'].tail(1))

for i in db.dataset2.find({"_id": {"$gt": ObjectId(last_inserted_id) }}):
     print i

然后就会出现错误。

TypeError: id must be an instance of (str, unicode, ObjectId), not <class      
'pandas.core.series.Series'>

这是我的数据框的样子..
   _id  \
0  5663110c691db01e0cac9d89   
1  56631205691db01e0cac9d8a   

                   dish                                order_area order_id  
0  [{u'dish_substitute': u'Yes', u'home_chef_name...        NaN  order_1   
1  [{u'dish_substitute': u'Yes', u'home_chef_name...        NaN  order_2   

 order_lat     order_long              order_time user_id  
0  73.955741   40.772027 2015-12-05 16:30:04.345  user_1  
1  43.955741   70.772027 2015-12-05 16:34:13.281  user_2

如何处理这个问题?
请帮忙解决。


我认为你可以将最后一个项目转换为列表,再从列表转换为字符串 - last_inserted_id = "".join(df['_id'].tail(1).tolist()),如果 df['_id'].dtypesobject - 可能是 string - jezrael
1
如果它是数字,你可以尝试:last_inserted_id = "".join(df['_id'].astype('str').tail(1).tolist())。顺便说一下,我发表评论,因为我不知道你的输入数据框。 - jezrael
你能展示一下你数据框的部分内容吗? - Anton Protopopov
1个回答

1
print df
#                        _id  no
#0  5663110c691db01e0cac9d89  55
#1  56631205691db01e0cac9d8a  77

#convert to string approach
last_inserted_id = "".join(df['_id'].astype('str').tail(1).tolist())
print last_inserted_id
#56631205691db01e0cac9d8a


#tail only approach
last_inserted_id =  "".join(df['_id'].tail(1))
print last_inserted_id
#56631205691db01e0cac9d8a

#iloc approach
last_inserted_id_iloc =  df['_id'].iloc[-1]
print last_inserted_id_iloc 
#56631205691db01e0cac9d8a

当我按照大多数人说的去做时.. `last_inserted_id = df_imported['_id'].tail(1).tolist()str2 = ''.join(last_inserted_id),它会给我一个错误TypeError: sequence item 0: expected string, ObjectId found`。我是Python的新手,真的不知道这里发生了什么。 - Neil
我已经添加了我的数据框,请帮忙。 - Neil
_id 是 id 列(数据框中的第一列)。 - Neil
最后插入的ID = "".join(df_imported['_id'].astype('str').tail(1).tolist())。这终于起作用了..非常感谢。 :) - Neil
抱歉..我不知道这个..我已经接受了你之前的答案,但是我不知道如何在评论中接受它。 - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接