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

2024-06-25 05:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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\u data.Frame获取了nan值

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

使用上面的代码,我得到一个只包含nan值的新列

我想在dataframe中有一个新列,如下所示:

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

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


Tags: namedataframedatafindframeclasstotalfus
2条回答

如果所有字符串的格式都相同,则可以使用regex和^{},如下所示:

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

您可以使用apply创建自定义函数并将其应用于DataFrame列:

# 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)

相关问题 更多 >