我是python编程新手。我有两个数据帧df1包含标签(180k行),df2包含设备名称(1600行)
df1:
Line TagName CLASS 187877 PT_WOA .ZS01_LA120_T05.SB.S2384_LesSwL 10 187878 PT_WOA .ZS01_RB2202_T05.SB.S2385_FLOK 10 187879 PT_WOA .ZS01_LA120_T05.SB._CBAbsHy 10 187880 PT_WOA .ZS01_LA120_T05.SB.S3110_CBAPV 10 187881 PT_WOA .ZS01_LARB2204.SB.S3111_CBRelHy 10
df2:
EquipmentNo EquipmentDescription Equipment
1311256 Lifting table LA120
1311257 Roller bed RB2200
1311258 Lifting table LT2202
1311259 Roller bed RB2202
1311260 Roller bed RB2204
df2.Equipment位于df1.TagName中字符串之间的某个位置。我需要根据df2设备是否在df1标记名中进行匹配,然后df2(设备描述和设备编号)必须与df1匹配
最终输出应为
Line TagName quipmentdescription EquipmentNo
187877 PT_WOA .ZS01_LA120_T05.SB.S2384_LesSwL Lifting table 1311256
187878 PT_WOA .ZS01_RB2202_T05.SB.S2385_FLOK Roller bed 1311259
187879 PT_WOA .ZS01_LA120_T05.SB._CBAbsHy Lifting table 1311256
187880 PT_WOA .ZS01_LA120_T05.SB.S3110_CBAPV Lifting table 1311256
187881 PT_WOA .ZS01_LARB2204.SB.S3111_CBRelHy Roller bed 1311260
我现在已经试过了
cols= df2['Equipment'].tolist()
Xs=[]
for i in cols:
Test = df1.loc[df1.TagName.str.contains(i)]
Test['Equip']=i
Xs.append(Test)
然后根据“设备”合并xs和df2
但我得到了这个错误
first argument must be string or compiled pattern
我会这样做:
创建一个新列
indexes
,其中对于df2中的每个Equipment
,在df1中找到一个索引列表,其中df1.TagName包含Equipment
通过使用
stack()
和reset_index()
输出:
初始化提供的数据帧:
我建议如下:
这将产生以下数据帧:
让我知道这是否有帮助
df1
和df2
如下:df1
df2
df2
中的Equipment
中查找唯一的equipment
equipment
中查找匹配项,在df1
中创建Equipment
列Equipment
上合并成最终形式df_final
中使用Equipment
列,请将.drop(columns=['Equipment'])
添加到下一行代码的末尾李>df_final
相关问题 更多 >
编程相关推荐