我需要知道是否可以通过Python执行以下任务。
我有一个4,300个地址的列表,每个地址都覆盖一定范围的地址,如下所示:
我想隔离范围内的第一个地址和最后一个地址。因此,以1为例,我需要输出以分别给我8519 S Broadway和8521 S Broadway。
在某些情况下,例如1和3,我只需要第一个数字的前两位数字即可完成第二个地址。我在Excel中尝试使用文本输入到(-)列,然后使用CONCATENATE和LEFT(cell,2),但是随后对于2和4这样的实例,我得不到正确的地址,我需要该地址的前三位数字。有什么办法可以编写python脚本来解决这个问题?
答案 0 :(得分:0)
尝试以下代码:
addresses=["8519-21 S Broadway","8700-6 Riverview Blvd"]
output=[]
for i in addresses:
output.append(i[0:i.find('-')]+i[i.find(' '):])
numEnd=i[i.find('-')+1:i.find(' ')]
numStart=i[0:i.find('-')-len(numEnd)]+numEnd+i[i.find(' '):]
output.append(numStart)
print(output)
addresses
是您所提供格式的地址范围列表,而output
是您想要的数据。
答案 1 :(得分:0)
假设您的输入cat_cols = ['Pclass', 'Sex', 'Embarked']
df_train = pd.read_csv('train.csv')
df_pred = pd.read_csv('test.csv')
df_join = pd.concat([df_train[cat_cols], df_pred[cat_cols]])
df_join = df_join.fillna(df_join.mode, axis=0)
df_join.Embarked.unique()
文件如下所示:
.csv
,您希望它看起来像这样:
Address
8519-21 S Broadway
8700-6 Riverview Blvd
822-4 Angelica St
8442-6 N Broadway
您可以使用csv
模块来完成此操作:
First Address,Last Address
8519 S Broadway,8521 S Broadway
8700 Riverview Blvd,8706 Riverview Blvd
822 Angelica St,824 Angelica St
8442 N Broadway,8446 N Broadway
这会将您的结果输出到 output.csv 中。
答案 2 :(得分:0)
全部感谢您的帮助和建议。这就是我最终解决它的方式:
import re
import csv
from csv import DictReader
dash_add = []
def get_address_list(file):
with open(file) as f:
reader = csv.DictReader(f)
for row in reader:
adds = row['Siteaddr']
if "-" in adds:
dash_add.append(adds)
z = []
def get_formatted_address(address):
numeric = address.split(" ")[0]
text = address.replace(numeric, "").strip()
start = numeric.split("-")[0]
end = numeric.split("-")[1]
end = start[:-len(end)] + end
return [start + " " + text, end + " " + text]
get_address_list('./data/map_data_112318.csv')
[z.extend(get_formatted_address(i)) for i in dash_add]
with open('formatted_addresses.csv', 'w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Address'])
for v in z:
writer.writerows([[v]])