根据区域分组不同的地址,Python

2024-09-28 22:25:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网上搜索这类问题,但它们有些不同,不能帮助我得出结论。我有一个有两列的数据框,“区域”和“地址”。在1000次观测中,有322个独特的区域。你知道吗

我的目标是实际存储与一个区域对应的所有地址词。我试过使用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

我想要的是把怀特菲尔德的所有词组合起来,比如“别墅、不、棕榈、财富、酒店、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.

这应该不复杂。有更好的方法。可能是什么?你知道吗


Tags: 数据noin区域fordataaddress地址
2条回答
import pandas as pd
def collect_to_set(grp):                               # 3
    return set.union(*[set(row.split()) for row in grp['Address']])

data = pd.read_table('data', sep='\s{2,}')             # 1
result = data.groupby(['Area']).apply(collect_to_set)  # 2
print(result)                                          # 4
# Area
# mahadevapura         set([ballet, outer, road, ring, d1001, akme])
# vasanth nagar            set([cant, station, railway, cantonment])
# whitefield       set([hotel,room, sap, fortune, villa, no, oppo...
# dtype: object

print(result.to_dict())                                # 5
# {'vasanth nagar': set(['cant', 'station', 'railway', 'cantonment']),
# 'mahadevapura': set(['ballet', 'outer', 'road', 'ring', 'd1001', 'akme']),
# 'whitefield': set(['hotel,room', 'sap', 'fortune', 'villa', 'no', 'opposite',
# 'palm', 'labs,', '4112', 'medose', '106/107'])}
  1. 我使用read_table将数据片段加载到数据帧中。 因为已经有了data作为数据帧,所以当然没有 我需要这条线。你知道吗
  2. 这是主线。它将dataArea分组,然后调用 每个组的collect_to_set函数grp。你知道吗
  3. collect_to_set中,grpdata(带有all)的子数据帧 具有相同Area)的行。它返回所有单词的setgrp['Address']的行。你知道吗
  4. resultSeries。你知道吗
  5. 如果你想要一个dict,就用result.to_dict()。你知道吗

把你的条目。作为如下所示。并运行排序方法。你知道吗

d=(('vasanth nagar','cant railway station'),
('mahadevapura','akme ballet d1001 outer ring road'),
('whitefield','villa no 106/107 palm medose '),
('whitefield','fortune hotel,room 4112 opposite sap labs,'),
('vasanth nagar','station cantonment'))

for i in sorted(d):
    print i[0],"     ",i[1]

相关问题 更多 >