我正在尝试将"24S"、"36N"(代表纬度值(等字符串转换为"S24",以便我可以将"S"替换为"-",将"N"替换为"+"。我的数据帧包含两列具有此类值。
我的代码看起来像这样:
def chng_to_str(df, col):
for each in df[col]:
lst= [char for char in each]
lst= lst[-1:] + lst[:-1]
new= ''
new= new.join(lst)
lst.clear()
df.loc[df[col]== each, col]= new
dict1= {'Lat': ['23S', '32N', '45S', '23S'],
'Lon': ['56E','65W', '49W', '32E']}
df= pd.DataFrame(dict1)
df.head()
Lat Lon
0 23S 56E
1 32N 65W
2 45S 49W
3 23S 32E
我期待
Lat Lon
0 S23 E56
1 N32 W65
2 S45 W49
3 S23 E32
但我得到的输出是
Lat Lon
0 3S2 E56
1 N32 W65
2 S45 W49
3 3S2 E32
使用pandas.DataFrame.replace
:
df.replace('(d+)(w+)', '\2\1', regex=True)
输出:
Lat Lon
0 S23 E56
1 N32 W65
2 S45 W49
3 S23 E32
df.applymap(lambda x: x[-1] + x[:-1])
Lat Lon
0 S23 E56
1 N32 W65
2 S45 W49
3 S23 E32