Pandas Extraire les éléments par nom de colonne x numéro de ligne

introduction

Bien que l'extraction d'élément soit basée sur le nom de ligne / nom de colonne, le numéro de ligne / numéro de colonne tel que loc, iloc, etc. J'ai posté un mémo car je n'ai pas trouvé la méthode d'extraction par nom de colonne x numéro de ligne.

Ce que je voulais faire

À partir du bloc de données d'origine (avec nom de colonne, sans nom de ligne), divisez-vous en groupes avec des éléments spécifiques, Il était nécessaire de se référer à chaque trame de données une ligne à la fois pour le traitement.

À ce moment-là, j'ai essayé de traiter par numéro de ligne car je pouvais spécifier la colonne mais pas la ligne comme je m'y attendais. (J'ai pensé à reset_index, mais je suis sûr qu'il devrait être possible de spécifier par nom de colonne x numéro de ligne ...)

Conclusion

At et index peuvent être combinés et extraits avec df.at [df.index [row number], 'column name'] </ b>

(J'aurais dû lire correctement l'article ci-dessous ...) https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

Procès

DataFrame


#Créer un bloc de données avec uniquement des noms de colonnes
df = pd.DataFrame({'person':['a','b','c','a','b','c'],\
                  'name':['aa','bb','cc','aaa','bbb','ccc'],\
                  'num':[100,200,300,1000,2000,3000]})

	person	name	num
0	a	aa	100
1	b	bb	200
2	c	cc	300
3	a	aaa	1000
4	b	bbb	2000
5	c	ccc	3000

Dans les deux cas, il est possible d'extraire simplement la 0ème ligne (= aa) de la colonne "nom" du df d'origine.

person_0


df['name'][0]
#Sur la ligne extraite(Omoto)index=Peut être extrait car il y a 0
# aa

df.at[df.index[0],'name']
# aa

Cette fois, réduisez la colonne "personne" à la même personne, puis essayez d'obtenir la 0ème ligne.

  • Bien qu'il soit différent de cette histoire, lors de la réduction de la matrice ou de l'extraction d'éléments Attention à ne pas devenir accro à "SettingWithCopyWarning" (j'en étais accro ...)   https://linus-mk.hatenablog.com/entry/2019/02/02/200000   https://qiita.com/HEM_SP/items/56cd62a1c000d342bd70

person_a_0


# "person"Réduire à la ligne avec la colonne a
df_a = df[df['person']=="a"]
df_a
	person	name	num
0	a	aa	100
3	a	aaa	1000

df_a['name'][0]
#Sur la ligne extraite(Omoto)index=Peut être extrait car il y a 0
# aa

df_a.at[df_a.index[0],'name']
# aa

person_b_0


# "person"Réduire à la ligne avec la colonne b
df_b = df[df['person']=="b"]
df_b
	person	name	num
1	b	bb	200
4	b	bbb	2000

df_b['name'][0]
#Index sur la ligne extraite=Erreur car il n'y a pas de 0

df_b.at[df_b.index[0],'name']
# bb

En utilisant at, nous avons pu extraire des éléments par numéro de ligne pour n'importe quelle trame de données.

À la fin

J'espère qu'il sera utile à ceux qui sont en difficulté parce qu'ils ne peuvent pas le trouver.

Recommended Posts

Pandas Extraire les éléments par nom de colonne x numéro de ligne