繁体   English   中英

如何在Pandas数据框中拆分列的值?

[英]How to Split the values of a column in a Pandas dataframe?

我有以下数据框,我想操纵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

使用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)']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM