Python pandas или лямбда-утилита для фильтрации записей в наборе данных в фрейм данных retention1, фрейм данных retention2 или смешанный фрейм данных

#python #pandas #dataframe #validation

Вопрос:

Я хочу отфильтровать существующий фрейм данных на основе приведенного ниже условия. Вот фрейм данных.

Входная Запись

Условия:

  1. Мне нужно классифицировать их по категориям retention1, retention2 или и то, и другое. Отнесите его в категорию retention1, если значения находятся в категории retention1, а записи retention2 все отсутствуют. Аналогично для столбца retention2, у столбца retention2 есть значения, а у столбца retention1 их нет. Но для смешанного хранения — для каждой записи » имя » у вас может быть значение retention1 как Нет и значение retention2 как Нет. но должно быть одно допустимое значение столбца — retention1 или retention2, как показано в наборе данных.
  2. При классификации сравните идентификатор кластера с AZ_URL. Если идентификатор кластера находится во второй части AZ_URL, то правильные значения являются первым элементом retention1 или retention2.
  3. Сравните идентификатор кластера с AZ_URL. Если идентификатор кластера находится в первой части AZ_URL, то правильные значения являются вторым элементом retention1 или retention2.

Retention1: Определение имени, имеет две записи с retention2, значения которых отсутствуют, и retention1-это [3;4] и [3;1], поэтому проверьте идентификатор кластера в AZ_URL, так как он находится в первой части AZ_URL, сохраните вторую часть хранения 1 в выходной записи ниже.

Удержание1

Удержание 2: Для имен rls идентификатор кластера bn4323 находится во второй части AZ_URL. Поэтому извлеките первую часть сохранения 2 — 7 и первую часть сохранения моментальных снимков — ежемесячно.

Удержание2

Сохранение микса: Имена abc, cgh входят в сохранение микса, поскольку у них обоих есть две записи, и у record1 нет удержания1 (и удержание2 нет), а у record2 нет удержания2 (и удержание1 нет).

Удержание Смеси

Я попытался написать коды ниже, но это ошибка.

Расчет удержания1:

 m=df['retention1'].notna()
n=df['retention2'].notna() 

df3=df.loc[m amp; ~n,['Name', 'ClusterID','Az_URL','retention1']].dropna(axis=1)

df3['retention1']=df3['retention1'].str.extract(r'(d )',expand=False)
 

Расчет удержания2:

 df=df.replace({'None':None})
m=df['retention1'].notna()
n=df['retention2'].notna() 

df4=df.loc[n amp; ~m,['Name', 'ClusterID','Az_URL','retention2', 'retention snapshot']].dropna(axis=1)

df4['retention2']=df4['retention2'].str.extract(r'(d )',expand=False)
df4['retention2']=df4['retention2'].str.extract(r'([a-zA-Z ] )',expand=False)
 

Удержание Смеси:

 df=df.replace({'None':None})
m=df['retention1'].notna()
n=df['retention2'].notna() 

df_merge = df.groupby("name").agg(lambda x['retention1']: list(['retention1']))