【发布时间】:2014-03-24 00:31:47
【问题描述】:
我在 SO 上搜索了此类问题,但它们有些不同,无法帮助我得出结论。我有一个包含 2 列“区域”和“地址”的数据框。在 1000 个观测值中,有 322 个独特的区域。
我的目标是实际存储与一个 Area 对应的所有地址词。我曾尝试使用 dict 等,但后来这些变得太复杂了。熊猫一定有一些简单的东西。
这是我的数据:
Sr.no Area Address
1 vasanth nagar cant railway station
2 mahadevapura akme ballet d1001 outer ring road
3 whitefield villa no 106/107 palm medose
4 whitefield fortune hotel,room 4112 opposite sap labs,
5 vasanth nagar station cantonment
我想要的是对所有与 whitefield 一起出现的单词进行分组,例如“别墅、不、棕榈、财富、酒店、sap 实验室……等”等等。我希望它采用列表格式,但由于我现在无处可去,任何类型的分组都可以将属于每个唯一区域的所有地址分配到一起。请注意,我有数千个观察结果,因此不应对其进行硬编码。
最后,我自己做了什么??这就是一切:
area_ref = data['Area'].sort_index()
area_ref2=set(area_ref)
from collections import defaultdict
grouped = defaultdict(list)
for row in data:
grouped[row['Area']].append(row['Address'])
#dint work . error that index should be int , not string.
subset = data[['Area','Address']]
tuples1 = [tuple(x) for x in subset.values]
from collections import defaultdict
res = defaultdict(list)
for v, k in tuples1: res[k].append(v)
di2=[{'type':k, 'items':v} for k,v in res.items()]
#this last one gave me a really bad dictionary.
这应该不复杂。有一些更好的方法。会是什么?
【问题讨论】:
-
你能根据输入显示预期的结果吗?
-
我希望将与特定区域相关的所有单词组合在一起。最好是一个列表@XavierCombelle。所以,'cant, train, station ,cantonment...' 属于 Vasanth nagar。
标签: python sorting group-by pandas dataframe