当存在重复元素时,如何使迭代器在列表理解中的单个元素中运行?



我正在尝试将"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

最新更新