Skip to main content
 首页 » 编程设计

python之在数据框列的多个位置插入字符

2025年05月04日11telwanggs

我有一个有很多行的表,我需要更改所有第一个“”空格为“h”,第二个空格为“m”并在最后添加字符“s”

import pandas as pd 
 
d = {'RA' : ['11 50 10.4747', "11 50 10.2641","11 50 10.0534", "11 50 09.8428"],'DEC':["+26 01 09.559","+26 01 10.770", "+26 01 11.980","+26 01 13.191"]} 
df=pd.DataFrame(d) 
for i in range(len(df)): 
    RA = df['RA'][i] 
    RA = str.replace(RA, " ", "h", 1) 
    RA = str.replace(RA, " ", "m", 1) 
    RA += "s" 
    df['RA'][i] = RA 
    DEC = df['DEC'][i] 
    DEC = str.replace(DEC, " ", "d", 1) 
    DEC = str.replace(DEC, " ", "m", 1) 
    DEC += "s" 
    df['DEC'][i] = DEC 

我已经制作了这段代码,但我的使用速度越来越慢。 使用此代码,我将数据框从:

     DEC             RA 
+26 01 09.559  11 50 10.4747  
+26 01 10.770  11 50 10.2641   
+26 01 11.980  11 50 10.0534  
+26 01 13.191  11 50 09.8428 

为此:

         DEC              RA 
0  +26d01m09.559s  11h50m10.4747s 
1  +26d01m10.770s  11h50m10.2641s 
2  +26d01m11.980s  11h50m10.0534s 
3  +26d01m13.191s  11h50m09.8428s 

有什么功能可以做到这一点吗? 我尝试使用 df.replace,但它替换了表中的所有“”...

现在谢谢

请您参考如下方法:

定义一个函数来处理 split 和重组。您可以使用 str.split,然后分别进行一些 super 简单的字符串连接。

def split_combine(v, letters=list('dms')): 
    v = v.str.split(expand=True) 
    return ( 
       v[0] + letters[0]  
     + v[1] + letters[1]  
     + v[2] + letters[2] 
    ) 

现在,使用适当的参数调用它。

df['DEC'] = split_combine(df.DEC, list('dms')) 
df['RA'] = split_combine(df.RA, list('hms')) 
 
df 
              DEC              RA 
0  +26d01m09.559s  11h50m10.4747s 
1  +26d01m10.770s  11h50m10.2641s 
2  +26d01m11.980s  11h50m10.0534s 
3  +26d01m13.191s  11h50m09.8428s