我想从列表数组中减去在每个字符串值中找到的两个数字,并将其转换为整数。
当前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]
我只是不知道如何减去它们
答案 0 :(得分: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]
答案 1 :(得分:0)
尽管未在问题中说明,但该答案可以使用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