我一直在处理一个包含用户id、DateTime对象和其他信息的数据帧,如下所示:
User_ID;Latitude;Longitude;Datetime
222583401;41.4020375;2.1478710;2014-07-06 20:49:20
287280509;41.3671346;2.0793115;2013-01-30 09:25:47
329757763;41.5453577;2.1175164;2012-09-25 08:40:59
189757330;41.5844998;2.5621569;2013-10-01 11:55:20
624921653;41.5931846;2.3030671;2013-07-09 20:12:20
414673119;41.5550136;2.0965829;2014-02-24 20:15:30
414673119;41.5550136;2.0975829;2014-02-24 20:16:30
414673119;41.5550136;2.0985829;2014-02-24 20:17:30
我将用户分组为:
g = df.groupby(['User_ID','Datetime'])
然后检查是否没有单个数据时间对象:
df = df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
我获得了以下布尔数据帧:
User_ID
189757330 False
222583401 False
287280509 False
329757763 False
414673119 True
624921653 False
Name: Datetime, dtype: bool
对于我的目的来说,只保留具有真正屏蔽值的用户ID是很好的。现在,我只想保留与真值关联的用户ID值,并将它们写入一个新的数据帧,例如pandas.to_csv
。预期的数据帧将只包含具有多个DateTime对象的用户ID:
User_ID;Latitude;Longitude;Datetime
414673119;41.5550136;2.0965829;2014-02-24 20:15:30
414673119;41.5550136;2.0975829;2014-02-24 20:16:30
414673119;41.5550136;2.0985829;2014-02-24 20:17:30
如何访问每个用户ID的布尔值?谢谢你的帮助。
首先,确保没有重复的条目:
然后,计算出每一个的计数:
最后,找出索引重叠的位置:
将
df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
的结果赋给一个变量,以便您可以执行布尔索引,然后使用此索引调用isin
,并筛选原始df:然后可以正常调用上面的
to_csv
相关问题 更多 >
编程相关推荐