[ python data frame] cell skippen als de waarde leeg is

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • MRkool
  • Registratie: Juli 2022
  • Laatst online: 26-08-2024
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
path=  'C:\\Users\\*\\*\\auto_folders'
#path= '*:\\*\\*\\00 ALGEMEEN'


#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    for line in names_file :
        line_list = line.split (';')
        # line list 0 is de eerste kolom(straatnaam), line list 1 is de tweede kolom(huisnummer) linelist2 is de derde kolom(huisnummertoevoeging)
        directory_name = "Foto's - " + line_list [3] + " - " + line_list [2]
        #line_list [0] + " " + line_list [1]  + "-" + line_list [2] + "-" + line_list [3] #+ "-" + line_list [4]
        os.makedirs (directory_name)



Mijn vraag;
Ik gebruik de volgende code om mappen te maken met de naam van een adres.
Dat werkt al prima! maar ik wil toch net iets beter.
De kolom huisnummer toevoeging is 90-95% leeg. Graag zou ik een loopje toevoegen die zo een cell alleen meeneemt als er een waarde in zit.
...

Relevante software en hardware die ik gebruik
Anaconda Spyder

...

[ Voor 0% gewijzigd door RobIII op 20-07-2023 18:49 . Reden: Code tags gefoxed ]

Beste antwoord (via MRkool op 31-07-2023 15:51)


  • Merethil
  • Registratie: December 2008
  • Laatst online: 14-09 18:17
MRkool schreef op vrijdag 28 juli 2023 @ 16:57:
Dag Heren,

@Barreljan Ik heb even jouw code geprobeerd bedankt voor je werk.
resultaat is het werk

FileExistsError: [WinError 183] Kan geen bestand maken dat al bestaat: "Foto's - 1443BN - Juno 39"

de toevoeging wordt nu niet meer megenomen....

[Afbeelding]

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    for line in names_file :
        line_list = line.split (';')
        # line list 0 is de eerste kolom(straatnaam), line list 1 is de tweede kolom(huisnummer) linelist2 is de derde kolom(huisnummertoevoeging)
        directory_name = "Foto's - " + line_list [4] + " - " + line_list [2]
        try:
            toevoeging = line_list [3]
        except IndexError:
            toevoeging = ""
        #line_list [0] + " " + line_list [1]  + "-" + line_list [2] + "-" + line_list [3] #+ "-" + line_list [4]
        os.makedirs (directory_name)
Na de try doe je ook niets meer met varibele 'toevoeging'. Die moet je natuurlijk nog wel aan het einde toevoegen aan je directory_name.

Alle reacties


Acties:
  • 0 Henk 'm!

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 08:49
@MRkool je topicstart is stuk.

Acties:
  • 0 Henk 'm!

  • MRkool
  • Registratie: Juli 2022
  • Laatst online: 26-08-2024
@MRkool je topicstart is stuk.
Je bedoelt de tekst onderaan??
Mijn vraag;
Ik gebruik de volgende code om mappen te maken met de naam van een adres.
Dat werkt al prima! maar ik wil toch net iets beter.
De kolom huisnummer toevoeging is 90-95% leeg. Graag zou ik een loopje toevoegen die zo een cell alleen meeneemt als er een waarde in zit.

Acties:
  • 0 Henk 'm!

  • Rukapul
  • Registratie: Februari 2000
  • Laatst online: 08:49
Ik bedoel dat behalve in de titel er geen 'dataframe' of 'cell' voorkomt in de code. En dat de code tag niet correct gebruikt is. En dat de vraagstelling onduidelijk is.

Tenslotte, is er in deze constructie geen winst te behalen. Kijken of een veld leeg is en daarop branchen is duurder dan een leeg veld concatteneren.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wanneer ik hier een nieuw topic maak, zie ik toch echt:
Mijn vraag
...

Relevante software en hardware die ik gebruik
...

Wat ik al gevonden of geprobeerd heb
...
Toch is die vraag bij jou om een of andere reden weggevallen? Dus bij deze, nogmaals: Wat heb je zelf al gezocht, gevonden en/of geprobeerd om je vraag te beantwoorden? Tevens zou ik graag zien dat je je topicstart even aanvult (klik op "Wijzig" rechtsbovenaan je bericht) zoals Rukapul ook aangeeft:
Rukapul schreef op donderdag 20 juli 2023 @ 15:57:
Ik bedoel dat behalve in de titel er geen 'dataframe' of 'cell' voorkomt in de code. En dat de code tag niet correct gebruikt is. En dat de vraagstelling onduidelijk is.
Verder heb ik je code-tags gefixed, dan is je topic in ieder geval leesbaar ;)

[ Voor 50% gewijzigd door RobIII op 20-07-2023 19:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Illusion
  • Registratie: November 2000
  • Laatst online: 23:12

Illusion

(the art of)

Je kan het volgende proberen
code:
1
2
3
4
if linelist[3] is None:
    Maak deze naam aan zonder toevoeging
else:
    Maak een andere naam aan met de toevoeging

Soms ben ik er wel, en soms ook weer niet.


Acties:
  • 0 Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 10-09 10:42

Barreljan

...Zoom-Zoom...

Illusion schreef op donderdag 20 juli 2023 @ 19:07:
Je kan het volgende proberen
code:
1
2
3
4
if linelist[3] is None:
    Maak deze naam aan zonder toevoeging
else:
    Maak een andere naam aan met de toevoeging
Dat gaat een fout oplopen want als die index 3 niet bestaat, geeft het een IndexError. Dus oplossing is eerder:

Python:
1
2
3
4
try:
   toevoeging = linelist[3]
except IndexError:
   toevoeging = ""

Maar dit is heel eenvoudig even getikt. TS zou de try/except wel moeten afstemmen op zijn code, thans wat er gebeurt in dat blok met variabelen of niet. In een loop kan je bij de except ook 'continue' doen maar dan moet je later wéer je var 'toevoeging' checken of die bestaat of niet.

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


Acties:
  • 0 Henk 'm!

  • Ben(V)
  • Registratie: December 2013
  • Nu online
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from pathlib import Path
import os
path=  'C:\\Users\\*\\*\\auto_folders'
#path= '*:\\*\\*\\00 ALGEMEEN'


#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)
try:
    with open ('autofolder.csv', 'r') as names_file :
        for line in names_file.readline():
            directory_name = "Foto's - ", + line.replace(';' , ' - ')
            if directory_name .endswith(' - '):
                directory_name  = directory_name [:-3]
            try:
                os.makedirs (directory_name, exist_ok = True)
                print(f"Created: {directory_name}")
            except Exception as Error:
                print(Error)
except Exception as Error:
    print(Error)

[ Voor 21% gewijzigd door Ben(V) op 26-07-2023 12:03 ]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


Acties:
  • 0 Henk 'm!

  • MRkool
  • Registratie: Juli 2022
  • Laatst online: 26-08-2024
Dag heren,

Bedankt voor je moeite
@Ben(V) Eerst ik kreeg eerst een indent-error met jouw code maar dat was simpel te fixen. De nieuwe code is onderaan toegevoegd.
voor de rest het spijt maar ik ben nog jullie mogelijke oplossingen toe gekomen

Ik bedenk mij nu dat niet heb verteld dat de huisnummertoeving in aparte kolom staat
het resultaat van de code is dan dit...

Afbeeldingslocatie: https://tweakers.net/i/9-QKcVdrGV5uk6GOm3dFDrthuUU=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/QkRq8IkamwmrniKJIqCuWhE0.png?f=user_large

De map van juno 37 heeft een koppelteken op het laatst.
Hierdoor wordt de map niet herkent door ons upload-programma
De mappen van Juno 39 A tot G worden wel herkend!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    for line in names_file :
        line_list = line.split (';')
        # line list 0 is de eerste kolom(straatnaam), line list 1 is de tweede kolom(huisnummer) linelist2 is de derde kolom(huisnummertoevoeging)
        directory_name = "Foto's - " + line_list [4] + " - " + line_list [2] + " - " + line_list [3]
        #line_list [0] + " " + line_list [1]  + "-" + line_list [2] + "-" + line_list [3] #+ "-" + line_list [4]
        os.makedirs (directory_name)
#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    directory_name = "Foto's - ", + names_file.replace(';' , ' - ')
    if directory_name .endswith(' - '):
            directory_name  = directory_name [:-3]
    os.makedirs (directory_name)


bedankt!

Acties:
  • 0 Henk 'm!

  • MRkool
  • Registratie: Juli 2022
  • Laatst online: 26-08-2024
Dag Heren,

@Barreljan Ik heb even jouw code geprobeerd bedankt voor je werk.
resultaat is het werk

FileExistsError: [WinError 183] Kan geen bestand maken dat al bestaat: "Foto's - 1443BN - Juno 39"

de toevoeging wordt nu niet meer megenomen....

Afbeeldingslocatie: https://tweakers.net/i/ic1V0QjC8PxX9ojAONuYI-OiYl4=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/VPqfEioDCrZr9ZGuhXNssoCy.png?f=user_large

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    for line in names_file :
        line_list = line.split (';')
        # line list 0 is de eerste kolom(straatnaam), line list 1 is de tweede kolom(huisnummer) linelist2 is de derde kolom(huisnummertoevoeging)
        directory_name = "Foto's - " + line_list [4] + " - " + line_list [2]
        try:
            toevoeging = line_list [3]
        except IndexError:
            toevoeging = ""
        #line_list [0] + " " + line_list [1]  + "-" + line_list [2] + "-" + line_list [3] #+ "-" + line_list [4]
        os.makedirs (directory_name)

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 14-09 18:17
MRkool schreef op vrijdag 28 juli 2023 @ 16:57:
Dag Heren,

@Barreljan Ik heb even jouw code geprobeerd bedankt voor je werk.
resultaat is het werk

FileExistsError: [WinError 183] Kan geen bestand maken dat al bestaat: "Foto's - 1443BN - Juno 39"

de toevoeging wordt nu niet meer megenomen....

[Afbeelding]

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#veranderd het home-directory naar het directory in path
os.chdir (path)

#NAW-bestand opslaan in path als CSV-file met lijstscheidingtekens (;)  
with open ('autofolder.csv', 'r') as names_file :
    names_file.readline ()
    for line in names_file :
        line_list = line.split (';')
        # line list 0 is de eerste kolom(straatnaam), line list 1 is de tweede kolom(huisnummer) linelist2 is de derde kolom(huisnummertoevoeging)
        directory_name = "Foto's - " + line_list [4] + " - " + line_list [2]
        try:
            toevoeging = line_list [3]
        except IndexError:
            toevoeging = ""
        #line_list [0] + " " + line_list [1]  + "-" + line_list [2] + "-" + line_list [3] #+ "-" + line_list [4]
        os.makedirs (directory_name)
Na de try doe je ook niets meer met varibele 'toevoeging'. Die moet je natuurlijk nog wel aan het einde toevoegen aan je directory_name.

Acties:
  • 0 Henk 'm!

  • MRkool
  • Registratie: Juli 2022
  • Laatst online: 26-08-2024
THX DAT WAS HET!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Voor een volgende keer: Debuggen: Hoe doe ik dat?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 14-09 18:17
Top! Maar ik noem slechts de laatste stap in je proces.
Ik denk dat @Barreljan's antwoord beter als "beste antwoord" gemarkeerd kan worden.
Pagina: 1