[PYTHON] Pandas Extrahieren Sie Elemente nach Spaltenname x Zeilennummer

Einführung

Obwohl die Elementextraktion basierend auf dem Zeilennamen / Spaltennamen, der Zeilennummer / Spaltennummer wie loc, iloc usw. erfolgt. Ich habe ein Memo gepostet, weil ich die Extraktionsmethode nach Spaltenname x Zeilennummer nicht finden konnte.

Was ich machen wollte

Teilen Sie den ursprünglichen Datenrahmen (mit Spaltennamen, ohne Zeilennamen) in Gruppen mit bestimmten Elementen ein. Für die Verarbeitung musste auf jeden Datenrahmen zeilenweise Bezug genommen werden.

Zu diesem Zeitpunkt habe ich versucht, nach Zeilennummer zu verarbeiten, da ich die Spalte, aber nicht die erwartete Zeile angeben konnte. (Ich habe über reset_index nachgedacht, aber ich bin sicher, dass es möglich sein sollte, durch Spaltennamen x Zeilennummer anzugeben ...)

Fazit

At und Index können mit df.at [df.index [Zeilennummer], 'Spaltenname'] </ b> kombiniert und extrahiert werden

(Ich hätte den Artikel unten richtig lesen sollen ...) https://note.nkmk.me/python-pandas-at-iat-loc-iloc/

Versuch

DataFrame


#Erstellen Sie einen Datenrahmen mit nur Spaltennamen
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

In beiden Fällen ist es möglich, einfach die 0. Zeile (= aa) der Spalte "Name" aus dem ursprünglichen df zu extrahieren.

person_0


df['name'][0]
#In der extrahierten Zeile(Omoto)index=Kann extrahiert werden, da 0 vorhanden ist
# aa

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

Grenzen Sie diesmal die Spalte "Person" auf dieselbe Person ein und versuchen Sie dann, die 0. Zeile abzurufen.

  • Obwohl es sich von dieser Geschichte unterscheidet, wenn die Matrix eingegrenzt oder Elemente extrahiert werden Achten Sie darauf, nicht süchtig nach "SettingWithCopyWarning" zu werden (ich war süchtig danach ...)   https://linus-mk.hatenablog.com/entry/2019/02/02/200000   https://qiita.com/HEM_SP/items/56cd62a1c000d342bd70

person_a_0


# "person"Eingrenzen auf Zeile mit Spalte a
df_a = df[df['person']=="a"]
df_a
	person	name	num
0	a	aa	100
3	a	aaa	1000

df_a['name'][0]
#In der extrahierten Zeile(Omoto)index=Kann extrahiert werden, da 0 vorhanden ist
# aa

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

person_b_0


# "person"Eingrenzen auf Zeile mit Spalte 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 für die extrahierte Zeile=Fehler, weil es keine 0 gibt

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

Mit at konnten wir Elemente nach Zeilennummer für jeden Datenrahmen extrahieren.

Am Ende

Ich hoffe, es ist nützlich für diejenigen, die in Schwierigkeiten sind, weil sie es nicht finden können.

Recommended Posts

Pandas Extrahieren Sie Elemente nach Spaltenname x Zeilennummer