9 svar
163 visningar
Kovac är nöjd med hjälpen
Kovac 110
Postad: 19 sep 2021 12:57 Redigerad: 19 sep 2021 12:57

Pandas funktion, koppla 2 kolumnvärden och ge ut resultat

Hej, min uppgift är att skapa en funktion som via ett datum som argument returnerar motsvarande regnvärde. 

 

Datan:

 

Min kod:

Jag måste alltså importera datan från csv filen först. Men hur kodar jag så att datumet jag anger ger tillbaka motsvarande data för regnfall? Några tips? Jag har ju som ni ser försökt med a som funktionsvariabel och sedan länka a till att det ska vara raden "Dygn" som anges i värden men tydligen funkar inte det.

Dr. G 9351
Postad: 19 sep 2021 13:03

Du kan väl få ut vilket index som ditt aktuella datum har? Från regnkolumnen så vill du ha ut elementet med detta index. 

Kovac 110
Postad: 19 sep 2021 13:27 Redigerad: 19 sep 2021 13:41
Dr. G skrev:

Du kan väl få ut vilket index som ditt aktuella datum har? Från regnkolumnen så vill du ha ut elementet med detta index. 

Hur kodar man det då? Är det via .loc kommandot?

 

Är detta nära eller är jag helt fel ute? 3e kolumnen är ju datumet, 4e är datan för nederbörd.

Hondel 1294
Postad: 19 sep 2021 14:07 Redigerad: 19 sep 2021 14:08

Du kan med data.loc[data[”Dygn”]==a] få ut den rad i data som har dygn-kolumnen lika med värdet a. Med detta kan du sedan plocka ut nederbörd. Typ

row = data.loc[data[”Dygn”]==a]

return row[”Nederbörd(mm)”]

Se exempelvis https://stackoverflow.com/questions/17071871/how-do-i-select-rows-from-a-dataframe-based-on-column-values

Kovac 110
Postad: 19 sep 2021 14:56
Hondel skrev:

Du kan med data.loc[data[”Dygn”]==a] få ut den rad i data som har dygn-kolumnen lika med värdet a. Med detta kan du sedan plocka ut nederbörd. Typ

row = data.loc[data[”Dygn”]==a]

return row[”Nederbörd(mm)”]

Se exempelvis https://stackoverflow.com/questions/17071871/how-do-i-select-rows-from-a-dataframe-based-on-column-values

 

Tack det funkade! Men varför visas raden under med name och dtype? Kan jag få bort det på något sätt? Jag vet inte om det är godkänt då i exemplet nedan ska den bara ge ut ett värde av typ float.

 

Dr. G 9351
Postad: 19 sep 2021 17:40

Prova att returnera row.Value eller något liknande. 


Tillägg: 19 sep 2021 17:47

return row[”Nederbörd(mm)”].Value

Kovac 110
Postad: 19 sep 2021 18:13
Dr. G skrev:

Prova att returnera row.Value eller något liknande. 


Tillägg: 19 sep 2021 17:47

return row[”Nederbörd(mm)”].Value

Tack @Dr.G & Hondel, löste det!

Kovac 110
Postad: 26 sep 2021 09:59 Redigerad: 26 sep 2021 10:33
Dr. G skrev:

Prova att returnera row.Value eller något liknande. 


Tillägg: 19 sep 2021 17:47

return row[”Nederbörd(mm)”].Value

Hej igen, jag testade att köra koden i ett script och fick följande felmeddelande;

 

 

Men den funkar i jupyterhub. Vet ni vad som kan vara fel?

Kovac 110
Postad: 26 sep 2021 09:59
Hondel skrev:

 

Se ovan.

Kovac 110
Postad: 26 sep 2021 13:18

löste det!

Svara Avbryt
Close