如何创建一个新列读取另一列中的字符串的一部分并将其转换为整数

我需要根据另一列字符串类型的信息在数据框中创建一个新列。


dataframe name= total_data


class,name


 a, C-FRA_FRA-S18_FU_L_FUS_FR073_STR001-STR00


 b, C-FRA_FRA-S18_FU_L_FUS_FR074_STR010-STR011


我曾尝试使用 find() 方法但它不起作用,我获得了新列 total_data.Frame 的 nan 值


total_data["Frame"]=total_data.name.str[total_data.name.str.find("FR0"):total_data.name.str.find("_STR")]

使用上面的代码,我获得了一个仅包含nan值的新列


我想在数据框中有一个新列,如下所示:


class,name, Frame


a,C-FRA_FRA-S18_FU_L_FUS_FR073_STR001-STR001,73


b,C-FRA_FRA-S18_FU_L_FUS_FR074_STR010-STR011,74


如果可能,这个新列包含整数。


繁华开满天机
浏览 144回答 2
2回答

狐的传说

如果所有字符串的格式相同,则可以使用正则表达式,str.extract如下所示:df['Frame'] = df['name'].str.extract(r"FR0(\d+)_STR").astype(int)#   class                                        name  Frame# 0     a   C-FRA_FRA-S18_FU_L_FUS_FR073_STR001-STR00     73# 1     b  C-FRA_FRA-S18_FU_L_FUS_FR074_STR010-STR011     74

潇潇雨雨

您可以使用以下方法创建自定义函数并将其应用于 DataFrame 列apply:# Example set-up:df = pd.DataFrame(data={"class":["a", "b"],                         "name":["C-FRA_FRA-S18_FU_L_FUS_FR073_STR001-STR00",                                 "C-FRA_FRA-S18_FU_L_FUS_FR074_STR010-STR011"]})# Solution:def str_func(s):    ix1 = s.find("FR0")+3    ix2 = s.find("_STR")    return s[ix1:ix2]df["Frame"] = df["name"].apply(str_func).astype(int)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python