【发布时间】:2020-06-08 21:43:01
【问题描述】:
我正在处理天气数据,并且仍在学习如何有效地使用 pandas...我有一个 pandas 数据集,其中有一排风速和风向已格式化。问题是方向的字符串格式。当前风速风向列df['WindDirSpeed']的格式如下:
IssueDatetime Regions \
0 2018-01-01 06:00:00 SOUTH COAST
1 2018-01-01 06:00:00 SOUTH COAST
2 2018-01-01 06:00:00 SOUTH COAST
3 2018-01-01 06:00:00 SOUTH COAST
4 2018-01-01 06:00:00 EAST COAST-CAPE ST FRANCIS AND SOUTH
... ... ...
12833 2018-12-30 06:00:00 SOUTHEASTERN GRAND BANKS
12834 2018-12-30 06:00:00 SOUTHEASTERN GRAND BANKS
12835 2018-12-30 06:00:00 SOUTHEASTERN GRAND BANKS
12836 2018-12-30 06:00:00 SOUTHWESTERN GRAND BANKS
12837 2018-12-30 06:00:00 SOUTHWESTERN GRAND BANKS
forecastTime forecastHour WindDirSpeed
0 2018-01-01 06:00:00 0.0 SW35
1 2018-01-01 15:00:00 9.0 SW25
2 2018-01-02 08:00:00 26.0 SW15-20
3 2018-01-02 15:00:00 33.0 VRB10-15
4 2018-01-01 06:00:00 0.0 SW35
... ... ... ...
12833 2018-12-30 06:00:00 0.0 W25
12834 2018-12-30 09:00:00 3.0 W25
12835 2018-12-30 18:00:00 12.0 NW35
12836 2018-12-30 06:00:00 0.0 W25
12837 2018-12-30 12:00:00 6.0 NW30
我试图编写一个函数来提取方向并创建一个仅具有风向的新行:
def find_windDir(row):
directions = ['VRB', 'N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']
for d in directions:
if d in row['WindDirSpeed']:
row['dir'] = d
row['WindSpeed'] = row['WindDirSpeed'].replace(d,'')
return row
不幸的是,这不起作用,因为“行内”会找到方向字符串的所有变体。
理想情况下,我需要在单独的列中将数据集与风速和风向分开:
Dir WindSpeed
SW 35
SW 25
SW 15-20
【问题讨论】:
-
简单的解决方法应该是按长度(最长在前)对“方向”中的字符串进行排序。
-
df['WindDirSpeed'].str.split('([VNEWS][REW]?[B]?)', expand=True)应该可以工作
标签: python python-3.x pandas