Python:比较循环中不同长度的索引数组

2024-09-29 22:32:47 发布

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

我试图循环我的索引值,当索引相同时执行操作A,当索引不同时执行操作B

我的索引是一个散列码,它在数据帧中重复,如下例所示

我能理解为什么我会出错,但我看不出如何比较它们。我不想使用groupby(),因为它会导致代码出现进一步的问题(请参见问题Python: Issue with groupby() and apply() when applying defined haversine function

我在建议isin()的地方发现了其他问题,但这里似乎不适用。我能做什么

# Unique index values
index_unique = df.index.unique().array

# All index values (including duplicates)
index_all = df.index.array

index_unique
>>
<PandasArray>
['356a192b7913b04c54574d18c28d46e6395428ab',
 'da4b9237bacccdf19c0760cab7aec4a8359010b0',
 '77de68daecd823babbb58edb1c8e14d7106e83bb']
Length: 3, dtype: object


index_all
>>
<PandasArray>
['356a192b7913b04c54574d18c28d46e6395428ab',
 '356a192b7913b04c54574d18c28d46e6395428ab',
 '356a192b7913b04c54574d18c28d46e6395428ab',
 'da4b9237bacccdf19c0760cab7aec4a8359010b0',
 'da4b9237bacccdf19c0760cab7aec4a8359010b0',
 '77de68daecd823babbb58edb1c8e14d7106e83bb',
 '77de68daecd823babbb58edb1c8e14d7106e83bb',
 '77de68daecd823babbb58edb1c8e14d7106e83bb',
 '77de68daecd823babbb58edb1c8e14d7106e83bb']
Length: 9, dtype: object

尝试时:

while index_all == index_unique:
    print("same index")

我得到一个错误:

(“长度必须匹配才能比较”,(9,),(3,)

尝试for循环时出现相同错误:

for i in index_all:
    if index_all == index_unique:
        print("same index")
    else:
        print("not the same index")

在尝试时:

while index_all.isin(index_unique):
    print("same index")

我得到一个错误:

'PandasArray'对象没有属性'isin'


Tags: dfindex错误allarraylengthuniquesame
2条回答

也把它作为一个答案

如果不访问两个不同长度的数组的元素,则无法直接比较这两个数组。尝试使用嵌套的for循环:

for i in index_all:
  for j in index_unique:
    if i == j:
      print('Same index')
    else:
      print("Not the same index")

请尝试以下方法:

def compareArray(index_unique, index_all): 
        matchCount = 0
        for val in index_unique:
            if val in index_all:
               matchCount += 1
    
        if(matchCount == len(index_unique)):
           return True
        else:
           return False
            

相关问题 更多 >

    热门问题