我是正则表达式的新手,正在尝试使用它来将地址解析为门牌号和街道。
示例: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.
说我有以下字典:
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)
这样做有更好/更清洁的方法吗?也许使用字典理解?
我有类似下面的列表列表:
>>> 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)
使用列表理解是否有更好或更简洁的方法来做到这一点?
我有类似以下数据帧:
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)
如果有多个窗口具有相同的最小总和,则结果可能具有每个窗口的记录.
说我有以下包含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()
两次为每个图制作一个单独的图。但是,有没有一种方法可以将我在我的图上同时绘制这两个图和子图?