Как преобразовать строку из списка в целое число, а затем вычесть? - PullRequest
0 голосов
/ 04 января 2019

Я хочу вычесть два числа, найденных в каждой строке, из массива списка и преобразовать в целое число.

current df:

                     pbp
0   ['0-0', '0-2', '0-4']
1   ['0-0', '2-0', '4-2']
2   ['0-0', '0-1', '0-2']

ожидаемый df:

            pbp
0   [0, -2, -4]
1   [0, 2, 2]
2   [0, -1, -2]

пробовал: df[['pbp']].applymap(lambda x: x.strip()).applymap(ast.literal_eval)

               pbp
0   [0-0, 0-2, 0-4]
1   [0-0, 2-0, 4-2]
2   [0-0, 0-1, 0-2]

Я просто не знаю, как их вычесть

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Хотя этот вопрос не указан в этом вопросе, он может охватывать несколько математических операций, используя pattern и re.split.

import re

def compute(data):
    output = []
    for entry in data:
        equation = re.split('([\/|\-|\+|\*\*|\*|%])', entry)

        result = {
           '*' : lambda e: int(e[0]) * int(e[2]),
           '+' : lambda e: int(e[0]) + int(e[2]),
           '-' : lambda e: int(e[0]) - int(e[2]),
           '\/': lambda e: int(e[0]) / int(e[2]),
           '%' : lambda e: int(e[0]) % int(e[2]),
        }[equation[1]](equation)

        output.append(result)
    return output
0 голосов
/ 04 января 2019

Вот быстрый и наивный способ добиться того, чего вы хотите:

def subtract_list(my_list):
    result=[]
    for val in my_list:
        numbers = val.split('-')
        res = int(numbers[0] )- int(numbers[1])
        result.append(res)
    print(result)
    return result

Вызов метода вернет:

subtract_list(['0-0', '0-2', '0-4'])

[0, -2, -4]

...