Ottieni l'indice delle righe la cui colonna corrisponde a un valore specifico in Pandas
- Ottieni indici di righe contenenti numeri interi / galleggianti nei pandas
- Ottieni indici di righe contenenti stringhe in Pandas
In questo articolo viene illustrato come ottenere l’indice delle righe che corrisponde a determinati criteri in Pandas.
La necessità di trovare gli indici delle righe è importante nell’ingegneria delle caratteristiche. Queste abilità possono essere utili per rimuovere i valori anomali o anomali in un Dataframe. Gli indici, noti anche come etichette di riga, possono essere trovati in Pandas utilizzando diverse funzioni. Nei seguenti esempi, lavoreremo sul dataframe creato utilizzando il seguente frammento.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df)
Produzione:
A B C D
0 13 16 1 4
1 4 8 10 19
2 5 7 13 2
3 7 8 15 18
4 6 14 9 10
5 17 6 16 16
6 1 19 4 18
7 15 8 1 2
8 10 1 11 4
9 12 19 3 1
10 1 5 6 7
11 9 18 16 5
12 10 11 2 2
13 8 10 4 7
14 12 15 19 1
15 15 4 13 11
16 12 5 7 5
17 16 4 13 5
18 9 15 16 4
19 16 14 17 18
Ottieni indici di righe contenenti numeri interi / galleggianti nei pandas
La funzione pandas.DataFrame.loc
può accedere a righe e colonne tramite le sue etichette / nomi. È semplice restituire le righe che corrispondono alla condizione booleana data passata come etichetta. Notare le parentesi quadre accanto a df.loc
nello snippet.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.loc[df["B"] == 19])
Le righe corrispondenti alla condizione booleana vengono restituite come output nel formato di un Dataframe.
Produzione:
A B C D
6 1 19 4 18
9 12 19 3 1
È possibile concatenare e applicare più condizioni alla funzione, come mostrato di seguito. Questo aiuta a isolare le righe in base a condizioni specifiche.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.loc[(df["B"] == 19) | (df["C"] == 19)])
Produzione:
A B C D
6 1 19 4 18
9 12 19 3 1
14 12 15 19 1
Ottieni indice di righe con pandas.DataFrame.index()
Se desideri trovare solo gli indici corrispondenti del dataframe che soddisfano la condizione booleana passata come argomento, pandas.DataFrame.index()
è il modo più semplice per ottenerlo.
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.index[df["B"] == 19].tolist())
Nello snippet di cui sopra, le righe della colonna A
che corrispondono alla condizione booleana == 1
vengono restituite come output come mostrato di seguito.
Produzione:
[6, 9]
Il motivo per cui mettiamo tolist()
dietro il metodo index()
è convertire l’index()
nella lista; in caso contrario, il risultato è del tipo di dati Int64Index
.
Int64Index([6, 9], dtype='int64'
Il recupero solo degli indici può essere eseguito anche in base a più condizioni. Lo snippet può essere scritto come segue:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 20, size=(20, 4)), columns=list("ABCD"))
print(df.index[(df["B"] == 19) | (df["C"] == 19)].tolist())
Produzione:
[6, 9, 14]
Ottieni indici di righe contenenti stringhe in Pandas
I valori della stringa possono essere confrontati in base a due metodi. Entrambi i metodi mostrati nella sezione precedente funzioneranno, ad eccezione del cambio di condizione.
Nei seguenti esempi, useremo il seguente snippet.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df)
Produzione:
Name Type
0 blue Raptors
1 delta Raptors
2 echo Raptors
3 charlie Raptors
4 alpha Tyrannosaurus rex
Ottieni l’indice delle righe con la corrispondenza di stringa esatta
La condizione di uguaglianza utilizzata nella sezione precedente può essere utilizzata per trovare la corrispondenza esatta della stringa nel Dataframe. Cercheremo le due corde.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df.index[(df["Name"] == "blue")].tolist())
print("\n")
print(df.loc[df["Name"] == "blue"])
print("\n")
print(df.loc[(df["Name"] == "charlie") & (df["Type"] == "Raptors")])
Produzione:
[0]
Name Type
0 blue Raptors
Name Type
3 charlie Raptors
Come visto sopra, è possibile ricevere sia l’indice che le righe corrispondenti alla condizione.
Ottieni indice di righe con la corrispondenza di stringa parziale
I valori della stringa possono essere parzialmente abbinati concatenando il dataframe alla funzione str.contains
. Nell’esempio seguente, cercheremo la stringa ha
in charlie e alpha.
import pandas as pd
df = pd.DataFrame(
{
"Name": ["blue", "delta", "echo", "charlie", "alpha"],
"Type": ["Raptors", "Raptors", "Raptors", "Raptors", "Tyrannosaurus rex"],
}
)
print(df.index[df["Name"].str.contains("ha")].tolist())
print("\n")
print(df.loc[df["Name"].str.contains("ha")])
print("\n")
print(df.loc[(df["Name"].str.contains("ha")) & (df["Type"].str.contains("Rex"))])
Produzione:
[3, 4]
Name Type
3 charlie Raptors
4 alpha Tyrannosaurus rex
Name Type
4 alpha Tyrannosaurus rex
Questa funzione può essere molto utile per eseguire una corrispondenza parziale della stringa su più colonne del dataframe.
Articolo correlato - Pandas DataFrame
- Come ottenere le intestazioni delle colonne DataFrame Pandas come lista
- Come cancellare la colonna DataFrame Pandas DataFrame
- Come convertire la colonna DataFrame in data e ora in pandas
- Converti un Float in un Integer in Pandas DataFrame
- Ordina Pandas DataFrame in base ai valori di una colonna
- Ottieni l'aggregato di Pandas Group-By e Sum
Articolo correlato - Pandas DataFrame Row
- Ottieni il conteggio delle righe di un DataFrame Pandas
- Mescola casualmente le righe DataFrame in Pandas
- Filtra le righe del dataframe in base ai valori delle colonne in Pandas
- Scorri le righe di un DataFrame in Pandas
- Ottieni l'indice di tutte le righe la cui colonna specifica soddisfa una determinata condizione in Pandas