Pandas使用列值切片字符串

gkn4icbw  于 2023-06-20  发布在  其他
关注(0)|答案(1)|浏览(178)

希望你能帮助这个问题。在上面的数据框(Temp列)中,我试图提取破折号后面的第二个值。我知道我可以使用.split或.extract,但是我更喜欢使用切片使用变量(在列DashPos中)。
我试过先转换成float,然后转换成int64或Int64,但都没有用。
我想使用df['DashPos']中的值,即df['SecondPos'] = df.Temp.str[df.DashPos:]然而,这给出了错误切片索引必须是整数或None或具有index方法。
任何帮助将非常感谢。数据框架和代码如下:

df = pd.DataFrame({
'Name':['Tom','Phil','Eric'],
'Alias':['T','P','E'],
'ID':[1,2,3],
'Age':[32,30,45],
'Temp':['100-200','200-300','200-300'],
'SSDashPos':[4,4,4]
              })

df= df.astype({'Temp':'string'})
df['DashPos'] = df.Temp.str.find('-').add(1)
df['SecondPos'] = df.Temp.str[df.DashPos:]

谢谢
史蒂文

2izufjch

2izufjch1#

一种方法是在axis = 1的lambda函数上使用apply。

df['SecondPos'] = df.apply(lambda x:x.Temp[x.DashPos:],axis=1)

当在axis = 1上使用apply方法时,函数接收对应于Dataframe df的行的pandas Series作为输入。因此,对于每一行,lambda函数获取列Temp中的值,并根据存储在列DashPos中的值应用切片。
有用吗?

相关问题