es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Buscando la posición de un índice en Python.

cols = [2,4,6,8,10,12,14,16,18] # seleccionando las columnas con las que quiero trabajar
df = pd.read_csv(‘mywork.csv’)
df1 = df.iloc[:, cols]
b= np.array(df1)
b
resultado
b = [[‘WV5 6NY’ ‘RE4 9VU’ ‘BU4 N90’ ‘TU3 5RE’ ‘NE5 4F’]
[‘SA8 7TA’ ‘BA31 0PO’ ‘DE3 2FP’ ‘LR98 4TS’ ‘0’]
[‘MN0 4NU’ ‘RF5 5FG’ ‘WA3 0MN’ ‘EA15 8RE’ ‘BE1 4RE’]
[‘SB7 0ET’ ‘SA7 0SB’ ‘BT7 6NS’ ‘TA9 0LP’ ‘BA3 1OE’]]

a = np.concatenate(b) #concatené para obtener un solo arreglo, funcionó bien

a = np.array([x for x in a if x != ‘nan’])
a = a[np.where(a != ‘0’)] #eliminé el nan
print(np.sort(a)) #para ordenar alfabéticamente

#Arreglo ordenado
[‘BA3 1OE’ ‘BA31 0PO’ ‘BE1 4RE’ ‘BT7 6NS’ ‘BU4 N90’
‘DE3 2FP’ ‘EA15 8RE’ ‘LR98 4TS’ ‘MN0 4NU’, ‘NE5 4F’ ‘RE4 9VU’
‘RF5 5FG’ ‘SA7 0SB’ ‘SA8 7TA’ ‘SB7 0ET’ ‘TA9 0LP’ ‘TU3 5RE’
‘WA3 0MN’ ‘WV5 6NY’]

#Encontrar la posición del índice de todos los elementos de b en a (arreglo ordenado)
def findall_index(b, a):
result = []
for i in range(len(a)):
for j in range(len(a[i])):
if b[i][j] == a:
result.append((i, j))
return result
print(findall_index(0,resultado))

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay algunos problemas con el código proporcionado. Primero, la definición de la función findall_index no tiene dos puntos al final de la línea. Debería ser:

    def findall_index(b, a):
    

    Además, la llamada a la función findall_index al final del código está pasando 0 como primer argumento en lugar de b. Debería ser:

    print(findall_index(b, result))
    

    Sin embargo, incluso con estas correcciones, el código no funcionará como se pretende porque la instrucción if en la función findall_index está comparando todo el elemento b[i][j] con todo el array a. Esto nunca será verdadero porque tienen diferentes dimensiones y valores. Para solucionar esto, podemos comprobar si el elemento individual b[i][j] está en el array a usando la palabra clave in:

    def findall_index(b, a):
        result = []
        for i in range(len(b)):
            for j in range(len(b[i])):
                if b[i][j] in a:
                    result.append((i, j))
        return result
    print(findall_index(b, result))
    

    Con estos cambios, la función findall_index debería encontrar correctamente las posiciones de índice de todos los elementos en b que están en el array a.

Comments are closed.