Изменить значение другого столбца на основе символов строки из первого столбца python, pandas, df.loc - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь изменить значение записи на основе символа в строке из другого столбца. Таким образом, если второй или последний символ одной строки - это число (0-9), а последний символ - буква (az), измените значение другого столбца.

Я не могу отправить почтовый индекс, который у меня есть из-за форматирования.

alpha = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
alpha = [x.upper() for x in alpha]
numbers  = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
df.loc[(df['CI Name'][-1].isin(alpha, na=False)) & (df['Device Category'] == 'Servers') & (df['CI Name'][-2].isin(numbers, na=False)), 'Device Category'] = 'Server Alias'

Я хотел бы изменить категорию устройства в зависимости от следующих условий:

1) if second to last character in CI name is a number
2) and last character in CI Name is a letter
3) and the Device Category is currently labeled 'Servers'

Не могу вставить код ошибки из-за проблем с форматированием

У меня естьпопробовал несколько вещей, но я не могу опубликовать их из-за проблем с форматированием

Я хочу изменить категорию устройства в зависимости от символа в коде.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вы можете использовать функцию str и регулярное выражение для сопоставления цифр и алфавита, как показано ниже

# find boolean index matching condition
bool_index = df["CI Name"][~df["CI Name"].isnull()].str[-2:] \
    .str.match("^\d[a-zA-Z]") & (df["Device Category"] == 'Server')

# set value to col1 for matching rows
df.loc[bool_index, "col1"] = "alias"

0 голосов
/ 30 сентября 2019

Попробуйте это:

df.loc[(df['CI Name'].str[-1].isin(alpha, na=False)) 
       & (df['Device Category'] == 'Servers') 
       & (df['CI Name'].str[-2].isin(numbers, na=False)), 'Device Category'] = 'Server Alias'
...