希望你能帮助这个问题。在上面的数据框(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:]
谢谢
史蒂文
1条答案
按热度按时间2izufjch1#
一种方法是在axis = 1的lambda函数上使用apply。
当在axis = 1上使用apply方法时,函数接收对应于Dataframe df的行的pandas Series作为输入。因此,对于每一行,lambda函数获取列
Temp
中的值,并根据存储在列DashPos
中的值应用切片。有用吗?