Ищете синтаксис функции для проверки столбца фрейма данных по двум разным парам ключ / значение словаря?

#python #pandas #dataframe #dictionary #type-conversion

Вопрос:

Словари для сравнения с:

 PositiveKey = {"{":"0", "A":"1", "B":"2"}  NegativeKey = {"}":"0", "J":"1", "K":"2"}  

Текущий кадр данных:

 Column 1 0 000000002758A 1 000000326588B 2 000000000567J  

Желаемый кадр данных:

 Column 1 0 275.81 1 32658.82 2 -56.71  

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

  1. Мне нужно, чтобы точка данных была обновлена соответствующим значением, а общая точка данных была определена как положительное или отрицательное целое число. (Т. Е. строка 0 должна быть «2758 1«, а строка 2 должна быть «-567 1«)
  2. Мне также нужно обновить точки данных, чтобы переместить десятичный знак на два места влево. (Т. Е. строка 0 должна быть «275,81», а строка 2 должна быть «-56,71»).

Я полагаю, что преобразование точек данных в целые числа, а затем умножение на /- .01 или деление на /- 100 может сработать здесь? Любой вклад приветствуется, спасибо!

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

1. Что такое "{": "0" ?

2. Кадр данных, который я показываю, является сокращенной версией фактического, с которым мне нужно работать. В самом большом из них некоторые символы, представленные в качестве последней точки точки данных, могут отображаться в скобках в качестве этого символа. Например, точка данных в строке 1 может читаться как «000000326588{» вместо «000000326588B» для некоторых точек данных. Каждый символ, будь то буква или скобка, представляет определенное числовое значение.

3. Это всегда последний символ?

4. Да, это всегда последний символ, которым нужно манипулировать

Ответ №1:

Ваша идея правильна, используя pd.eval :

Я полагаю, что преобразование точек данных в целые числа, а затем умножение на /- .01 или деление на /- 100 может сработать здесь?

 keys = {'^0 ': ''} keys.update({f'{k}

Выход:

 gt;gt;gt; df  Column 1 Column 2 0 000000002758A 275.81 1 000000326588B 32658.82 2 000000000567J -56.71  gt;gt;gt; keys {'^0 ': '',  '{


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

1. Привет, к сожалению, я получил ошибку, которая гласит "EOF в многострочном операторе, (2, 0)". Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с "фиктивным тестом". Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :

 def get_number(x):  if x[-1] in PositiveKey:  return float(x[:-1]   PositiveKey[x[-1]]) / 100  else:  return - float(x[:-1]   NegativeKey[x[-1]]) / 100   df['Column 1'] = df['Column 1'].apply(get_number)  

Выход:

 Column 1 0 275.81 1 32658.82 2 -56.71  

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

1. Это сработало, большое вам спасибо!

: f'{v}/100' for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит "EOF в многострочном операторе, (2, 0)". Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с "фиктивным тестом". Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100' for k, v in NegativeKey.items()}) df['Column 2'] = pd.eval(df['Column 1'].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит "EOF в многострочном операторе, (2, 0)". Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с "фиктивным тестом". Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: '0/100', 'A

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

1. Привет, к сожалению, я получил ошибку, которая гласит "EOF в многострочном операторе, (2, 0)". Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с "фиктивным тестом". Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100' for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит "EOF в многострочном операторе, (2, 0)". Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с "фиктивным тестом". Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100' for k, v in NegativeKey.items()}) df['Column 2'] = pd.eval(df['Column 1'].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: ‘1/100’, ‘B

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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100′ for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100′ for k, v in NegativeKey.items()}) df[‘Column 2’] = pd.eval(df[‘Column 1’].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: ‘2/100’, ‘}

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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100′ for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100′ for k, v in NegativeKey.items()}) df[‘Column 2’] = pd.eval(df[‘Column 1’].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: ‘0/-100’, ‘J

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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100′ for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100′ for k, v in NegativeKey.items()}) df[‘Column 2’] = pd.eval(df[‘Column 1’].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: ‘1/-100’, ‘K

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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100′ for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100′ for k, v in NegativeKey.items()}) df[‘Column 2’] = pd.eval(df[‘Column 1’].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: ‘2/-100’}

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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/100′ for k, v in PositiveKey.items()}) keys.update({f'{k}Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!

: f'{v}/-100′ for k, v in NegativeKey.items()}) df[‘Column 2’] = pd.eval(df[‘Column 1’].replace(keys, regex=True))

Выход:


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

1. Привет, к сожалению, я получил ошибку, которая гласит «EOF в многострочном операторе, (2, 0)». Я не совсем уверен, почему я получаю эту ошибку, так как я уже несколько раз перепроверял все свои скобки/скобки. Буду продолжать исследования, поскольку это явно сработало в вашем ответе, предоставленном, а также в моей записной книжке jupyter с «фиктивным тестом». Спасибо вам за вашу помощь до сих пор!

Ответ №2:

Вы можете применить функцию к 'Column 1' :


Выход:


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

1. Это сработало, большое вам спасибо!