Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当存在重复元素时,如何使迭代器在列表理解中的单个元素中运行?_Python_String_Pandas_List Comprehension - Fatal编程技术网

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

Python 当存在重复元素时,如何使迭代器在列表理解中的单个元素中运行?,python,string,pandas,list-comprehension,Python,String,Pandas,List Comprehension,我正在尝试将诸如“24S”、“36N”(表示纬度值)之类的字符串转换为“S24”,以便可以将“S”替换为“-”,将“N”替换为“+”。我的dataframe包含两个具有此类值的列 我的代码如下所示: def chang_to_str(df,col): 对于df[col]中的每一个: lst=[char for char in each] lst=lst[-1:]+lst[:-1] 新=“” 新建=新建。加入(lst) 一、清除 df.loc[df[col]==每个,col]=新 dict1={'

我正在尝试将诸如“24S”、“36N”(表示纬度值)之类的字符串转换为“S24”,以便可以将“S”替换为“-”,将“N”替换为“+”。我的dataframe包含两个具有此类值的列

我的代码如下所示:

def chang_to_str(df,col):
对于df[col]中的每一个:
lst=[char for char in each]
lst=lst[-1:]+lst[:-1]
新=“”
新建=新建。加入(lst)
一、清除
df.loc[df[col]==每个,col]=新
dict1={'Lat':['23S','32N','45S','23S'],
‘Lon’:[56E’、‘65W’、‘49W’、‘32E’]
df=pd.数据帧(dict1)
df.head()
拉特隆
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
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


x[:len(x)-1]
可以缩短为
x[:-1]
:)是的……只需将apply与相关列名一起使用即可@尼特萨瓦迪亚
df.applymap(lambda x: x[-1] + x[:-1])
   Lat  Lon
0  S23  E56
1  N32  W65
2  S45  W49
3  S23  E32