比较两个数据帧以进行分类

时间:2019-04-08 07:01:13

标签: python pandas dataframe

我有2个数据框,如下所示

我需要检查错误中是否存在代码,以便我可以按照类别对​​其进行分类,否则将输出NaN

试图使用它,但不起作用

    print(test['Error'].apply(lambda x: 0 if x in c1['A1'] else 1))
         Error
0   sampletest1
1  sampletest22
2   sampletest3
3         Test4
4         Test5

     Code   Category
0  test1  cat1
1  test2  cat2
2  test3  cat3

我需要输出为

Error              Category
0   sampletest1    cat1
1  sampletest22    cat1
2   sampletest3    cat3
3         Test4    NaN
4         Test5    NaN

1 个答案:

答案 0 :(得分:1)

您可以为测试子字符串创建字典,循环并设置与Series.str.contains匹配的值:

d = df2.set_index('Code')['Category']
print (d)
Code
test1    cat1
test2    cat2
test3    cat3
Name: Category, dtype: object

for k, v in d.items():
    df1.loc[df1['Error'].str.contains(k), 'Category'] = v
print (df1)
          Error Category
0   sampletest1     cat1
1  sampletest22     cat2
2   sampletest3     cat3
3         Test4      NaN
4         Test5      NaN

另一个想法是使用DataFrame.itertuples

for x in df2.itertuples():
    df1.loc[df1['Error'].str.contains(x.Code), 'Category'] = x.Category
相关问题