在下面的数据帧中,我希望将系列“资源”正确地分割到其不同的组件中,这些组件本机由字符“\u1”分隔:
import pandas as pd
Data = {'resource':['MTUG1_ABO_DPP_1','MTUG1_ABO_DPP_2','MTUG1_ABO_DPP_3','MTUG1_ABO_DPP_4','MTUG1_ABO_DPP_5','MTUG1_ABO_DPU_1','MTUG1_ABO_DPU_2','MTUG1_ABO_DPU_3','MTUG1_ABO_UUB_VDU1_1','MTUG1_ABO_UUB_VDU1_2','MTUG1_ABO_UUB_VDU1_3','MTUG1_ABO_UUB_VDU2_1','MTUG1_ABO_UUB_VDU2_2']}
df = pd.DataFrame(Data, columns= ['resource'])
我想要的结果是:
因此,MTUG1-->;成为新列“节点”的内容 DPPDPUUUB-->;成为新列“Unit”的内容 然后,我需要构建另一个新的系列“vm”,其中我将“Unit”中的字符串与下一个数字(通过添加“u”)连接起来,如果“Unit_num”中的内容是VDUx,我还需要将其与第五部分(vdu_num)连接起来
但如果我使用:
df['Node']=df['resource'].str.split("_").str.get(0)
df['Unit']=df['resource'].str.split("_").str.get(2)
unit_num=df['resource'].str.split("_").str.get(3)
vdu_num=df['resource'].str.split("_").str.get(4)
df['vm']=df['Unit'].str.cat(vm_num, sep="_").str.cat(vdu_num, sep="_")
df['vm'].unique()
我只得到VDU组件:
array([nan, 'UUB_VDU1_1', 'UUB_VDU1_2', 'UUB_VDU1_3', 'UUB_VDU2_1',
'UUB_VDU2_2'], dtype=object)
要查看其余部分,我必须删除最后一个连接。你将如何解决它
您可以使用布尔索引分别应用这两种情况,检查
vdu_num
是否为NaN产生
您可以简化拆分(只执行一次),然后还可以使用
where
来执行unit_num
或vdu_num
,具体取决于非空值:或者,如果您希望覆盖原始
df
:相关问题 更多 >
编程相关推荐