我有以下数据框和&我想操纵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
答案 0 :(得分:0)
使用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)']