从列值中拆分并获取字符串的一部分,并从python中的值生成新列

从列值中拆分并获取字符串的一部分,并从python中的值生成新列,python,pandas,dataframe,Python,Pandas,Dataframe,我的df中有这样一个字符串作为一列的值 ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232 ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232 如何使用此列的一部分获取新列。我需要的部分是 74 89 允许您根据分隔符将字符串分解为零件列表(此处为/和-) 用于将其应用于您的列 df['b'] = df['a'].apply(lambda s:s.split('/')[2].split('-')[1]) prin

我的df中有这样一个字符串作为一列的值

ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232
ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232
如何使用此列的一部分获取新列。我需要的部分是

74
89
允许您根据分隔符将字符串分解为零件列表(此处为
/
-

用于将其应用于您的列

df['b'] = df['a'].apply(lambda s:s.split('/')[2].split('-')[1])
print (df)
输出

                                              a   b
0  ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232  74
1  ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232  89

注意:使用的解决方案比我的快。

假设您的数据帧名为df,而列名为:

 df['sub_col'] = pd.Series([s[21:23] for s in df['col'].values], index=df.index)
如果这是df

    val
0   ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232
1   ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232
您可以使用str.extract

df['num_val'] = df.val.str.extract('LNFFF-(\d+)/', expand = False)
你得到

    val                                             num_val
0   ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232   74
1   ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232   89
看来你需要:

具有拆分方式和选择方式的解决方案:



不错。问题:如果我还需要申请一个条件怎么办?i、 e:如果
s
包括字符串
OPP
    val                                             num_val
0   ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232   74
1   ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232   89
df = pd.DataFrame({'a': ['ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232',
                         'ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232']})  
print (df)
                                               a
0  ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232
1  ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232

df['new'] = df['a'].str.extract('LNFFF-(\d+)', expand=False)
#if necessary convert to ints
df['new'] = df['new'].astype(int)
print (df)
                                               a new
0  ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232  74
1  ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232  89
df['new'] = df['a'].str.split('/').str[2].str.extract('(\d+)', expand=False)
print (df)
                                               a new
0  ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232  74
1  ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232  89
df['new'] = df['a'].str.split('/').str[2].str.split('-').str[1]
print (df)
                                               a new
0  ttt-OPP/MKKL-7/LNFFF-74/OOOP-71/AAD-1/RRR-232  74
1  ttt-OPP/MKKL-7/LNFFF-89/OOOP-71/AAD-1/RRR-232  89