Преобразование регистров в Python

#python #pandas

#python #pandas

Вопрос:

Я ищу функциональность в python, эквивалентную регистру в SQL. В принципе, у меня есть данные категории в моем фрейме данных, я хочу преобразовать что-то вроде приведенного ниже.

 Case when Column='X' then 'A' when Column='Y' then 'B' End.
  

Есть ли какая-либо эквивалентная функциональность в Python?

Комментарии:

1. Вы имеете в виду, что ищете функциональность в Pandas?

2. Используйте dictionary для сопоставления и замените его

Ответ №1:

Вы можете использовать встроенную функцию pandas ‘replace’, предоставляющую словарь, где key — это метка для замены, а value — метка для замены:

 df =pd.DataFrame({'Data': [1, 2, 3, 4, 5], 
                  'Labels': ['X', 'Y', 'Y', 'X', 'Y']})
df['Labels'] = df['Labels'].replace({'X': 'A', 'Y': 'B'})
  

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.replace.html

Редактировать:

Для более подробной замены, если вы знаете точную строку, которую хотите заменить, вы можете просто написать, как указано выше, например, {‘BHK Apartment’: Apartment’}. В противном случае, если вы хотите заменить любую строку, содержащую подстроку, например, ‘Villa’, вы можете использовать регулярное выражение:

 df =pd.DataFrame({'Data': [4, 4, 2],
                  'Labels': ['BHK Apartment', 'BHK Villa', 'BHK PentHouse']})
df['Labels'] = df['Labels'].replace({r'.*Apartment$': 'Apartment', r'.*Villa$': 'Villa', r'.*PentHouse$': 'PentHouse'}, regex=True)
  

https://kanoki.org/2019/11/12/how-to-use-regex-in-pandas/

Комментарии:

1. Могу ли я вместо сравнения apple с apple заменить соответствующий набор символов другой строкой? Например, исходными данными являются {4 BHK Квартира, 4 BHK вилла, 2 BHK пентхаус}, а целевые данные, которые я хотел, — {Квартира, вилла, пентхаус}. Существует много разных типов домов, я хотел классифицировать их как {Квартира, вилла, пентхаус, студия}.