Сравнение двух фреймов данных для классификации - PullRequest
1 голос
/ 08 апреля 2019

У меня есть 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 Ответ

1 голос
/ 08 апреля 2019

Вы можете создать словарь, цикл и установить значения, соответствующие 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...