Python cyklus for cez viac stlpcov – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python cyklus for cez viac stlpcov – Python – Fórum – Programujte.comPython cyklus for cez viac stlpcov – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
dawid2940
Newbie
7. 2. 2020   #1
-
0
-

Ahojte som tu nový na fore a taktiež sa učím trosku pracovať s Pythonom. Toto je kod ktorý používam avšak nepracuje tak akoby som chcel. Mam vytvorený stlpec s hodnotami ' NaN' , dalej mám 2 až 2+i stlpcov s číslami, kde sú aj hodnoty 'NAN'. Čo potrebujem od cyklu je ak je v danom stlpci číslo tam hodí hodnotu. ak sa však objaví číslo aj v dalšom stlpci tak ponechá vždy tu prvú hodnotu.

Ďakujem za pomoc

Připojen obrázek.

ANIMAL['DOG']=np.nan

for i in range (1,5): 

    ANIMAL['DOG2']=np.where(np.isnan(ANIMAL['DOG']) 
                          &
pd.notna(ANIMAL.iloc[:,(2+i)]),(i*10)-10,ANIMAL['DOG'])

Nahlásit jako SPAM
IP: 90.176.11.–
MilanL+1
Grafoman
7. 2. 2020   #2
-
0
-

#1 dawid294

problémem je 0 v DOG2, pokud bys nejdřív DOG2 nastavil na NaN, tak pak stačí do cyklu dát nejdříve podmínku jestli je NaN nebo už nastaveno, pokud bude nastaveno, tak pro dalíš sloupce ten výpočet přeskočíš.

EDIT: Výchozí nastavení na 0 nelze použít, neboť 0 se vztahuje na hodnotu ve sloupci 1

Nahlásit jako SPAM
IP: 91.139.9.–
dawid2940
Newbie
7. 2. 2020   #3
-
0
-

#2 MilanL
Ďakujem za odpoved, vyskúšal som opraviť zmeny avšak stále to nevychádza. Akoby to bolo ak by v DOG2 neboli 0 ale len čisla vačšie ako 0 a NA. teda žeby sa zmenil vzorec vo výpočte na (i*10)-5 a DOG2 (5,25,15,25,5)

Nahlásit jako SPAM
IP: 90.176.11.–
gna
~ Anonymní uživatel
1849 příspěvků
7. 2. 2020   #4
-
0
-

Já vůbec nechápu co to má dělat.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
8. 2. 2020   #5
-
0
-

#4 gna

jestli ta tabulka je to jak to má vypadat, tak dog2=(císlo sloupce s první hodnotou-2)x10 , tedy alespoň tak mi to připadá

Nahlásit jako SPAM
IP: 185.112.167.–
Řešení
gna
~ Anonymní uživatel
1849 příspěvků
8. 2. 2020   #6
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Právě té dvojky jsem se chytal, ale já ji tam prostě nevidím.

print(ANIMAL)
for i in range(1, 6):
    ANIMAL['DOG2'] = np.where(np.isnan(ANIMAL['DOG']) & pd.notna(ANIMAL.iloc[:, i]),
                              np.where(np.isnan(ANIMAL['DOG2']),
                                       (i - 1) * 10,
                                       ANIMAL['DOG2']),
                              ANIMAL['DOG2'])
print(ANIMAL)
   DOG     c1     c2     c3  c4     c5  DOG2
0  NaN  100.0    NaN    NaN NaN  100.0   NaN
1  NaN    NaN    NaN  500.0 NaN    NaN   NaN
2  NaN    NaN  300.0    NaN NaN    NaN   NaN
3  NaN    NaN    NaN  100.0 NaN  100.0   NaN
4  NaN  100.0  100.0    NaN NaN    NaN   NaN
5  NaN    NaN    NaN    NaN NaN    NaN   NaN
   DOG     c1     c2     c3  c4     c5  DOG2
0  NaN  100.0    NaN    NaN NaN  100.0   0.0
1  NaN    NaN    NaN  500.0 NaN    NaN  20.0
2  NaN    NaN  300.0    NaN NaN    NaN  10.0
3  NaN    NaN    NaN  100.0 NaN  100.0  20.0
4  NaN  100.0  100.0    NaN NaN    NaN   0.0
5  NaN    NaN    NaN    NaN NaN    NaN   NaN
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1849 příspěvků
8. 2. 2020   #7
-
+1
-
Zajímavé

Zbytečně jsem to překombinoval.

for i in range(1, 6):
    ANIMAL['DOG2'] = np.where(np.isnan(ANIMAL['DOG']) &
                                np.isnan(ANIMAL['DOG2']) &
                                pd.notna(ANIMAL.iloc[:, i]),
                              (i - 1) * 10,
                              ANIMAL['DOG2'])
Nahlásit jako SPAM
IP: 213.211.51.–
dawid2940
Newbie
11. 2. 2020   #8
-
0
-

#7 gna
ďakujem velmi pekne funguje to. Neviem čo by som robil bez vašej pomoci.

Nahlásit jako SPAM
IP: 90.176.11.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Menu cez viac divov — založil Peter

Python sorting cez lambdu — založil kiop

Cyklus v jazyce Python — založil Robert

Cyklus for python window — založil Petr Herynk

Pocet stĺpcov, tabuliek — založil radypala

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý