必须有一个简单的方法来做到这一点,但我无法找到一个优雅的解决方案,或由自己解决。
我试图根据数据帧中的一组列计算重复值的数量。
示例:
print df
Month LSOA code Longitude Latitude Crime type
0 2015-01 E01000916 -0.106453 51.518207 Bicycle theft
1 2015-01 E01000914 -0.111497 51.518226 Burglary
2 2015-01 E01000914 -0.111497 51.518226 Burglary
3 2015-01 E01000914 -0.111497 51.518226 Other theft
4 2015-01 E01000914 -0.113767 51.517372 Theft from the person
我的解决方法:
counts = dict()
for i, row in df.iterrows():
key = (
row['Longitude'],
row['Latitude'],
row['Crime type']
)
if counts.has_key(key):
counts[key] = counts[key] + 1
else:
counts[key] = 1
我得到了计数:
{(-0.11376700000000001, 51.517371999999995, 'Theft from the person'): 1,
(-0.111497, 51.518226, 'Burglary'): 2,
(-0.111497, 51.518226, 'Other theft'): 1,
(-0.10645299999999999, 51.518207000000004, 'Bicycle theft'): 1}
除了这段代码也可以改进(可以随意评论如何改进)之外,通过熊猫做这段代码的方法是什么?
对于那些感兴趣的人,我正在研究来自https://data.police.uk/的数据集
可以将
groupby
与函数size一起使用。 然后我用重命名列0
将索引重置为count
。可以按经度和纬度分组,然后在} 。
Crime type
列上使用^{通过
collections.Counter
可以得到O(n)溶液:结果:
相关问题 更多 >
编程相关推荐