小编AJG*_*519的帖子

使用 Python 正则表达式从字符串中提取门牌号和街道名称

我是正则表达式的新手,正在尝试使用它来将地址解析为门牌号和街道。

示例:123 Main St --> ['123', 'Main St']

由于我的一些街道字符串将具有连字符的街道地址,因此情况变得稍微复杂,在这种情况下,我想采用连字符之前的第一个数字。

示例:123-127 Main St --> ['123', 'Main St']

最后,我需要能够处理以数字开头的街道名称。

最复杂的例子是:123-127 3rd Ave --> ['123', '3rd Ave']

到目前为止,我已经能够提取街道号码,包括在连字符连接的情况下,但我不确定如何提取匹配街道号码模式后出现的街道名称。

MyString='123-127 Main St'
StreetNum=digit=re.findall('(^\d+)', MyString)
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

我还编辑了这个问题,指出破折号并不是唯一可以用两个数字分隔街道的字符。数据中总共出现三种情况:

1) 123-127 第五街

2) 123 1/2 第五街

3) 123 和 125 第五街

在所有这 3 种情况下,结果应为 123 5th St.

python regex

2
推荐指数
1
解决办法
1万
查看次数

从有序列表中的键排序字典值

说我有以下字典:

FruitValues={'Banana':3, 'Orange':4, 'Apple':1}
Run Code Online (Sandbox Code Playgroud)

我按照我要保留的顺序列出了这本字典的键:

SortOrder=['Orange', 'Apple', 'Banana']
Run Code Online (Sandbox Code Playgroud)

按列表顺序从字典中获取值列表的最有效方法是什么?

现在我的方法如下:

OrderedValues=[]
for Fruit in SortOrder:
    OrderedValues.append(FruitValues[Fruit])
print OrderedValues

[4, 1, 3]
Run Code Online (Sandbox Code Playgroud)

这样做有更好/更清洁的方法吗?也许使用字典理解?

python dictionary list

2
推荐指数
1
解决办法
48
查看次数

列表列表中每个元素的索引

我有类似下面的列表列表:

>>> mylist=[['A','B','C'],['D','E'],['F','G','H']]
Run Code Online (Sandbox Code Playgroud)

我想构建一个新的列表列表,其中每个元素都是一个元组,其中第一个值表示其子列表中该项的索引,第二个值是原始值.

我可以使用以下代码获取此信息:

>>> final_list=[]
>>> for sublist in mylist:
...     slist=[]
...     for i,element in enumerate(sublist):
...         slist.append((i,element))
...     final_list.append(slist)
... 
>>> 
>>> final_list
[[(0, 'A'), (1, 'B'), (2, 'C')], [(0, 'D'), (1, 'E')], [(0, 'F'), (1, 'G'), (2, 'H')]]
>>> 
Run Code Online (Sandbox Code Playgroud)

使用列表理解是否有更好或更简洁的方法来做到这一点?

python list

2
推荐指数
1
解决办法
68
查看次数

移动窗口中的熊猫总数最少

我有类似以下数据帧:

df=pd.Series(index=pd.date_range(start='1/1/2017', end='1/10/2017', freq='D'),
             data=[5,5,2,1,3,4,5,6,7,8])

df
Out[216]: 
2017-01-01    5
2017-01-02    5
2017-01-03    2
2017-01-04    1
2017-01-05    3
2017-01-06    4
2017-01-07    5
2017-01-08    6
2017-01-09    7
2017-01-10    8
Freq: D, dtype: int64
Run Code Online (Sandbox Code Playgroud)

我想确定具有最小总价值的3天期间的开始日期.因此,在这个例子中,2017-01-03到2017-01-05,在这3天中具有最小值,总和为6.

有没有办法在没有循环每个3天窗口的情况下执行此操作?

结果将是:

2017-01-03    6
Run Code Online (Sandbox Code Playgroud)

如果有多个窗口具有相同的最小总和,则结果可能具有每个窗口的记录.

python pandas

2
推荐指数
1
解决办法
231
查看次数

Geopandas地块作为子图

说我有以下包含3个多边形对象的地理数据框。

import geopandas as gpd
from shapely.geometry import Polygon

p1=Polygon([(0,0),(0,1),(1,1),(1,0)])
p2=Polygon([(3,3),(3,6),(6,6),(6,3)])
p3=Polygon([(3,.5),(4,2),(5,.5)])

gdf=gpd.GeoDataFrame(geometry=[p1,p2,p3])
gdf['Value1']=[1,10,20]
gdf['Value2']=[300,200,100]
Run Code Online (Sandbox Code Playgroud)

gdf 内容:

>>> gdf
                               geometry  Value1  Value2
0   POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))       1     300
1   POLYGON ((3 3, 3 6, 6 6, 6 3, 3 3))      10     200
2  POLYGON ((3 0.5, 4 2, 5 0.5, 3 0.5))      20     100
>>> 
Run Code Online (Sandbox Code Playgroud)

我可以通过调用geopandas.plot()两次为每个图制作一个单独的图。但是,有没有一种方法可以将我在我的图上同时绘制这两个图和子图?

在此处输入图片说明

在此处输入图片说明

matplotlib pandas geopandas

1
推荐指数
1
解决办法
2265
查看次数

标签 统计

python ×4

list ×2

pandas ×2

dictionary ×1

geopandas ×1

matplotlib ×1

regex ×1