Sintaksa :
Pogledajmo sintaksu i parametre koji se prosljeđuju ovoj funkciji:
pande. DataFrame . Ažuriraj ( drugo , pridružiti , prebrisati , filter_func , pogreške )
1. drugo : Objekt DataFrame s istim/različitim stupcima. Najmanje jedan stupac mora odgovarati da bi se izvršila operacija ažuriranja. Ako je serija proslijeđena, atribut name mora biti postavljen i koristi se kao naziv stupca za DataFrame za podudaranje.
2. pridružiti (Prema zadanom = 'lijevo'): LEFT JOIN je zadani spoj za ažuriranje. Nikakva druga spajanja nisu dopuštena.
3. prebrisati (Prema zadanim postavkama = True): Svi elementi u postojećem DataFrameu ažuriraju se prema zadanim postavkama. Samo NaN vrijednosti u postojećem DataFrameu ažuriraju se ako je ovaj parametar postavljen na 'False'.
4. filter_func (Prema zadanim postavkama = Ništa): Možemo kontrolirati ažuriranja na temelju funkcije. Ovaj parametar prihvaća funkciju koja uzima stupac (kao 1D – niz) kao parametar i vraća Booleov niz koji pokazuje treba li se vrijednost ažurirati ili ne.
5. pogreške (Prema zadanim postavkama = 'ignore'): ako oba DataFramesa drže vrijednosti koje nisu null i ažuriraju elemente, javlja se 'ValueError: Podaci se preklapaju'. Da biste se toga riješili, postavite ovaj parametar na 'ignore' ili ga ostavite kao zadani.
Sa zadanim parametrima
Pogledajmo kako ažurirati postojeći DataFrame sa zadanim parametrima: join='left', overwrite=True, filter_func=None, errors='ignore'.
1. Napravite dva DataFramea: “Camp1_budgets” i “Camp2_budgets”. “Camp1_budgets” sadrži “Day1” i “Day2”, a “Camp1_budgets” sadrži “Day1” i “Day3”.
2. Koristite funkciju update() za ažuriranje “Camp1_budgets” s “Camp2_budgets” određivanjem zadanih parametara.
uvoz pande
# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ 1200 , 1500 ] , [ 2400 , 5400 ] , [ 260 , 500 ] , [ 500 , 500 ] , [ 2000. godine , 4500 ] ] ,
stupci = [ '1. dan' , 'Dan 2' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ 400 , 1500 ] , [ 200 , 5400 ] , [ 360 , 500 ] , [ 300 , 500 ] , [ 800 , 4500 ] ] ,
stupci = [ '1. dan' , '3. dan' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() sa zadanim parametrima
Camp1_budgets.update ( Camp2_budgets, pridružiti = 'lijevo' , prebrisati = Istina, filter_func = Ništa, pogreške = 'zanemariti' )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Stupac 'Day1' podudara se u oba DataFramea. Dakle, ažuriraju se samo vrijednosti koje su prisutne u stupcima 'Dan1'. Konačno, stupac “Day1” u “Camp1_budgets” sadrži [400, 200, 360, 300, 800].
S parametrom Filter_Func
Pogledajmo kako koristiti parametar filter_func.
Primjer 1:
1. Napravite dva DataFramea: “Camp1_budgets” i “Camp2_budgets”. “Camp1_budgets” sadrži “Day1” i “Day2”, a “Camp1_budgets” sadrži “Day1” i “Day3”.
2. Koristite funkciju update() za ažuriranje “Camp1_budgets” s “Camp2_budgets” navođenjem parametra filter_func tako da se ažuriraju samo vrijednosti veće od 500. Prilagođena funkcija koja se prosljeđuje ovom parametru je sljedeća:
uvoz pande
# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ 1200 , 1500 ] , [ 2400 , 5400 ] , [ 260 , 500 ] , [ 500 , 500 ] , [ 2000. godine , 4500 ] ] ,
stupci = [ '1. dan' , 'Dan 2' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ 800 , 1500 ] , [ 200 , 5400 ] , [ 1100 , 500 ] , [ 300 , 500 ] , [ 300 , 4500 ] ] ,
stupci = [ '1. dan' , '3. dan' ] )
ispisati ( Camp2_budgets, ' \n ' )
def prilagođena_funkcija ( vrijednost ) :
povratak ( vrijednost > 500 )
# update() s filter_func = cust_function
Camp1_budgets.update ( Camp2_budgets, filter_func =custom_function )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
U stupcu 'Day1' prvog DataFramea, tri vrijednosti (1200, 2400 i 2000) veće su od 500. Samo su ove tri ažurirane na 800, 200 i 300.
Primjer 2:
1. Napravite dva DataFramesa: “Camp1_names” i “Camp2_names”. Oba drže isti stupac.
2. Koristite funkciju update() za ažuriranje “Camp1_names” s “Camp2_names” navođenjem parametra filter_func tako da se samo elementi koji su jednaki “Sales” ažuriraju na “Sales-Linuxhint”. Prilagođena funkcija koja se prosljeđuje ovom parametru je sljedeća:
uvoz pande
# prvi DataFrame - Camp1_names
Kamp1_imena = pande.DataFrame ( [ [ 'Prodajni' ] , [ 'Servis' ] ] ,
stupci = [ 'Ime' ] )
ispisati ( Camp1_names, ' \n ' )
# drugi DataFrame - Camp2_names
Camp2_names = pande.DataFrame ( [ [ 'Sales-Linuxhint' ] , [ 'Service-Linuxhint' ] ] ,
stupci = [ 'Ime' ] )
ispisati ( Camp2_names, ' \n ' )
def prilagođena_funkcija ( element ) :
povratak ( element == 'Prodajni' )
# update() s filter_func = cust_function
Camp1_names.update ( Camp2_names, filter_func =custom_function )
ispisati ( Camp1_names, ' \n ' )
Izlaz :
Postoji samo jedan element koji je “Prodaja”. Ažurira se na 'Sales-Linuxhint', a 'Service' ostaje nepromijenjen.
S parametrom grešaka
Pogledajmo kako pokrenuti pogreške ako DataFrames sadrži vrijednosti koje nisu null i ignorirati pogreške.
Primjer 1: Pogreške = 'Ignoriraj'
Ažurirajmo DataFrame 'Camp1_budgets' DataFrameom 'Camp2_budgets' postavljanjem parametra pogrešaka na 'ignore'.
uvoz pande# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ 1200 , 1500 ] , [ 2400 , 5400 ] , [ 260 , 500 ] , [ 500 , 500 ] , [ 2000. godine , 4500 ] ] ,
stupci = [ '1. dan' , 'Dan 2' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ ništa, 1500 ] , [ 200 , 5400 ] , [ ništa, 500 ] , [ 300 , 500 ] , [ ništa, 4500 ] ] ,
stupci = [ '1. dan' , '3. dan' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() s pogreškama='ignore'
Camp1_budgets.update ( Camp2_budgets, pogreške = 'zanemariti' )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Stupac 'Day1' u postojećem DataFrameu ažurira se stupcem 'Day1' u drugom DataFrameu bez ikakve pogreške.
Primjer 2: Pogreške = “Povećanje”
Stvorite DataFrame “Camp1_budgets” sa svim vrijednostima koje nedostaju i DataFrame “Camp2_budgets” s vrijednostima koje nisu null.
uvoz pande# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ Nijedan ] , [ Nijedan ] , [ Nijedan ] , [ Nijedan ] , [ Nijedan ] ] ,
stupci = [ '1. dan' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ 1200 ] , [ 2400 ] , [ 260 ] , [ 500 ] , [ 2000. godine ] ] ,
stupci = [ '1. dan' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() s greškama='raise'
Camp1_budgets.update ( Camp2_budgets, pogreške = 'podići' )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Stupac 'Day1' u postojećem DataFrameu (Camp1_budgets) ažurira se s 'Camp2_budgets' koji ima vrijednosti stupca 'Day1'. Pogreška se ne pojavljuje jer su sve nulte vrijednosti preslikane s vrijednostima koje nisu nulte.
Primjer 3: Pogreške = 'Povećanje': Preklapanja podataka
Postavite ga na 'True' za ažuriranje vrijednosti u DataFrameu 'Camp1_budgets' s DataFrameom 'Camp2_budgets' s pogreškama = 'raise'.
uvoz pande# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ 1200 ] , [ 2400 ] , [ 260 ] , [ 500 ] , [ 2000. godine ] ] ,
stupci = [ '1. dan' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ Nijedan ] , [ Nijedan ] , [ 567 ] , [ Nijedan ] , [ Nijedan ] ] ,
stupci = [ '1. dan' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() s greškama='raise'
Camp1_budgets.update ( Camp2_budgets, pogreške = 'podići' )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Stupac 'Day1' u postojećem drugom DataFrameu (Camp2_budgets) sadrži jednu vrijednost koja nije nula. Ova se vrijednost preklapa s vrijednošću koja nije null, tj. 260 preklapa se s 567. Dakle, ValueError se javlja.
S parametrom prepisivanja
Primjer 1: Prepiši = Istina
Ažurirajmo DataFrame 'Camp1_budgets' DataFrameom 'Camp2_budgets' postavljanjem prepisivanja na 'True'.
uvoz pande# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ ništa, 1500 ] , [ 200 , 5400 ] , [ ništa, 500 ] , [ 300 , 500 ] , [ ništa, 4500 ] ] ,
stupci = [ '1. dan' , '3. dan' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ 1200 , 1500 ] , [ 2400 , 5400 ] , [ 260 , 500 ] , [ 500 , 500 ] , [ 2000. godine , 4500 ] ] ,
stupci = [ '1. dan' , 'Dan 2' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() s overwrite=True
Camp1_budgets.update ( Camp2_budgets, prebrisati =Istina )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Sve vrijednosti koje su prisutne u stupcu 'Day1' u 'Camp1_budgets' ažuriraju se vrijednostima stupca 'Day1' iz 'Camp2_budgets'.
Primjer 2: Prepiši = False
Ažurirajmo DataFrame 'Camp1_budgets' DataFrameom 'Camp2_budgets' postavljanjem prepisivanja na 'False'.
uvoz pande# prvi DataFrame - Camp1_budgets
Camp1_budgets = pande.DataFrame ( [ [ ništa, 1500 ] , [ 200 , 5400 ] , [ ništa, 500 ] , [ 300 , 500 ] , [ ništa, 4500 ] ] ,
stupci = [ '1. dan' , '3. dan' ] )
ispisati ( Camp1_budgets, ' \n ' )
# drugi DataFrame - Camp2_budgets
Camp2_budgets = pande.DataFrame ( [ [ 1200 , 1500 ] , [ 2400 , 5400 ] , [ 260 , 500 ] , [ 500 , 500 ] , [ 2000. godine , 4500 ] ] ,
stupci = [ '1. dan' , 'Dan 2' ] )
ispisati ( Camp2_budgets, ' \n ' )
# update() s overwrite=False
Camp1_budgets.update ( Camp2_budgets, prebrisati =Netočno )
ispisati ( Camp1_budgets, ' \n ' )
Izlaz :
Samo NaN vrijednosti koje su prisutne u stupcu 'Day1' u 'Camp1_budgets' ažuriraju se vrijednostima u stupcu 'Day1' iz 'Camp2_budgets'. Postoje tri NaN vrijednosti u 'Camp1_budgets' i ažurirane su na 1200, 260 i 2000.
Zaključak
U Pandas DataFrameu ažuriranje podataka moguće je pomoću funkcije pandas.DataFrame.update(). Pandas.DataFrame.update() se koristi za ažuriranje/modificiranje vrijednosti (koje nisu null) iz drugog DataFramea/Serije. O svim se parametrima raspravlja s primjerima kako bi se koncept bolje razumio. O pogrešci preklapanja podataka detaljno se govori s primjerom pod primjerom parametra 'povećanja' pogrešaka.