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))
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:Además, la llamada a la función
findall_index
al final del código está pasando0
como primer argumento en lugar deb
. Debería ser:Sin embargo, incluso con estas correcciones, el código no funcionará como se pretende porque la instrucción
if
en la funciónfindall_index
está comparando todo el elementob[i][j]
con todo el arraya
. Esto nunca será verdadero porque tienen diferentes dimensiones y valores. Para solucionar esto, podemos comprobar si el elemento individualb[i][j]
está en el arraya
usando la palabra clavein
:Con estos cambios, la función
findall_index
debería encontrar correctamente las posiciones de índice de todos los elementos enb
que están en el arraya
.