为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁华开满天机 2022-01-05 11:09:21
我需要根据另一列字符串类型的信息在数据框中创建一个新列。dataframe name= total_dataclass,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, Framea,C-FRA_FRA-S18_FU_L_FUS_FR073_STR001-STR001,73b,C-FRA_FRA-S18_FU_L_FUS_FR074_STR010-STR011,74如果可能,这个新列包含整数。
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

如果所有字符串的格式相同,则可以使用正则表达式,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


查看完整回答
反对 回复 2022-01-05
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以使用以下方法创建自定义函数并将其应用于 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)


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信