如何分割数据帧中列的值?

2024-09-29 23:30:54 发布

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

我有以下数据帧&;我想操纵TypeName列中的值,以便它只包含括号开始之前的部分

    DeviceName      DispName     TypeName
0   TYZ:SB_INCOMING Incoming      Incoming(TYZ:SB_INCOMING)
1   TYZ:SB_SECTION  Add Section   TYZ:SB_SECTION
2   TYZ:SB_FDR_WL   WL            Main(TYZ:SB_FDR_WL)
3   TYZ:SB_VLMCCB   MCCB          Main(TYZ:SB_VLMCCB)
4   TYZ:SB_FDR_BPS  BPS           Main(TYZ:SB_FDR_BPS)

我试过这个

doc_df.TypeName, doc2= doc_df.TypeName.str.split("(")[0]

它的作用是为数据框中的TypeName列的所有行设置相同的值。有人能指出错误吗

我得到的电流输出是

    DeviceName      DispName     TypeName
0   TYZ:SB_INCOMING Incoming      Incoming
1   TYZ:SB_SECTION  Add Section   Incoming
2   TYZ:SB_FDR_WL   WL            Incoming
3   TYZ:SB_VLMCCB   MCCB          Incoming
4   TYZ:SB_FDR_BPS  BPS           Incoming

预期是

    DeviceName      DispName     TypeName
0   TYZ:SB_INCOMING Incoming      Incoming
1   TYZ:SB_SECTION  Add Section   TYZ:SB_SECTION
2   TYZ:SB_FDR_WL   WL            Main
3   TYZ:SB_VLMCCB   MCCB          Main
4   TYZ:SB_FDR_BPS  BPS           Main

Tags: addmainsectionsbwlincomingbpsfdr
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:54

使用str[0]选择列表的第一个值:

doc_df['TypeName'] = doc_df.TypeName.str.split("(").str[0]
print (doc_df)
        DeviceName     DispName        TypeName
0  TYZ:SB_INCOMING     Incoming        Incoming
1   TYZ:SB_SECTION  Add Section  TYZ:SB_SECTION
2    TYZ:SB_FDR_WL           WL            Main
3    TYZ:SB_VLMCCB         MCCB            Main
4   TYZ:SB_FDR_BPS          BPS            Main

因为如果省略它,则获取拆分的TypeName列的第一个值:

print (doc_df.TypeName.str.split("("))
0    [Incoming, TYZ:SB_INCOMING)]
1                [TYZ:SB_SECTION]
2          [Main, TYZ:SB_FDR_WL)]
3          [Main, TYZ:SB_VLMCCB)]
4         [Main, TYZ:SB_FDR_BPS)]
Name: TypeName, dtype: object

print (doc_df.TypeName.str.split("(")[0])
['Incoming', 'TYZ:SB_INCOMING)']

相关问题 更多 >

    热门问题