我是python和pandas的新手。在这里,我有以下具有两个列表的数据框。
Test Test1
[1,1,1] [1,2,2]
[1,2] [1,1]
[1,0] [1,1]
[2,2] [0,2]
在此datframe中,我正在尝试对两个列表进行补偿。有些条件只应返回true。 所以,
如果任何一方具有2个0和1个正值,而另一方具有相同的正值,则应返回True,否则返回False。
所以在这种情况下
[1,1]
[2,2]
这两个都将返回true。
现在,我尝试过的就是这样
def check_two_zeros_onEither_side(tup1,tup2):
count_on_previous = tup1.count(0)
count_on_next = tup1.count(0)
rem1 = [x for x in tup1 if x != 0]
rem2 = [x for x in tup2 if x != 0]
if count_on_previous == 2:
if all([rem1[0] == rem2[0],rem1[0] == rem2[1]]):
但是在这里,我无法处理诸如索引超出范围之类的异常情况。请问有什么可以帮助我的吗?谢谢。以及我该如何实现呢?
def check_two_zeros_onEither_side(tup1,tup2,ins):
count_on_previous = tup1.count(0)
count_on_next = tup2.count(0)
print(count_on_previous,count_on_next)
rem1 = [x for x in tup1 if x != 0]
rem2 = [x for x in tup2 if x != 0]
print(rem1,rem2,len(tup1),len(tup2))
if count_on_previous == 2 and len(rem1) == 1 and len(rem2) == 3:
if all( [rem1[0] == rem2[0],rem1[0] == rem2[1],rem1[0] == rem2[2]]):
print("GOin insde one",ins)
return True
elif count_on_next == 2 and len(rem2) == 1 and len(rem1) == 3:
if all([rem2[0] == rem1[0],rem2[0] == rem1[1],rem2[0] == rem1[2]]):
print("GOin insde two",ins)
return True
else:
return False
else:
return False
这是我尝试过的。。它正在工作,但是还有其他方法吗?