【问题标题】:How to convert string from list into integer, and then substract?如何将字符串从列表转换为整数,然后减去?
【发布时间】:2019-05-30 13:08:42
【问题描述】:

我想从列表数组中减去每个字符串值中找到的两个数字并转换为整数。

当前 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]

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

【问题讨论】:

  • 你是怎么得到这样的数据框的?
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask... the perfect question 在此处申请。 StackOverflow 不是设计、编码、研究或教程资源。但是,如果您遵循您在网上找到的任何资源,进行诚实的编码尝试并遇到问题,那么您将有一个很好的示例可以发布。
  • 那你有什么尝试?
  • 您可以将 eval 应用于数据框的行,尽管我不确定是否推荐
  • 您可以使用df['pbd'].apply(lambda xs: [ast.literal_eval(x) for x in xs])

标签: python pandas list data-manipulation


【解决方案1】:

这是实现您想要的快速而简单的方法:

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]

【讨论】:

  • 抱歉,当我写这个答案时,这个问题并没有提到它是一个数据框。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多