如何将列表中的字符串转换为整数,然后进行减法?

2024-06-08 00:08:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从列表数组中减去每个字符串值中的两个数字,然后转换成整数。你知道吗

当前测向:

                     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]

我只是不知道如何删减它们


Tags: lambda字符串df列表eval数字整数数组
2条回答

下面是一个快速而天真的方法来实现你想要的:

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]

虽然问题中没有说明,但这个答案可以涵盖使用patternre.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

相关问题 更多 >

    热门问题