Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5715

Re: [Python-de] Verstaendnisproblem

From Mike Müller <mmueller@python-academy.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Verstaendnisproblem
Date 2021-02-12 21:32 +0100
Organization Python Academy GmbH & Co. KG
Message-ID <mailman.1117.1613162882.7193.python-de@python.org> (permalink)
References (2 earlier) <bff5cf57-b57b-300b-17d8-5390cd8bb3da@web.de> <5436893.DvuYhMxLoT@host.fritz.box> <8c5a698d-6083-1244-f205-c843af42ef02@sschwarzer.net> <0f1c0b5f-3aa9-9576-0ac2-b19483be4dfd@web.de> <2aedd0a8-32a5-a2ba-3bce-3b77dd108667@python-academy.de>

Show all headers | View raw


Am 12.02.21 um 17:30 schrieb Peter Otten:
> On 12/02/2021 16:07, Stefan Schwarzer wrote:
>> On 2021-02-12 15:29, eilfh wrote:
>>> Am Donnerstag, 11. Februar 2021, 18:48:23 CET schrieb Peter Otten:
>>> Hallo, Peter
>>>
>>> danke für Deine Antwort.
>>>
>>> Das war das fehlende Puzzle in meinem Programm
>>>
>>>>   >>> x
>>>>
>>>> 0    4
>>>> Name: B, dtype: int64
>>>>
>>>>   >>> type(x)
>>>>
>>>> <class 'pandas.core.series.Series'>
>>>>
>>>>
>>>> kannst Du einfach entpacken
>>>>
>>>>   >>> [y] = x
>>>>   >>> y
>>>>
>>>> 4
>>>
>>>
>>> um ehrlich zu sein, ich versteh's zwar nicht,
>>> aber es läuft und erfüllte genau den Zweck
>>
>> Falls du `[y] = x` meinst, kann ich mir vorstellen, dass das
>> komisch aussieht. Das ist sogenanntes implizites "Tuple
>> unpacking", hier vielleicht eher "List unpacking". Du kannst
>> das auch als `y = x[0]` schreiben; ich denke, das ist klarer.
> 
> Wenn x vom Typ tuple oder list ist, gerne; aber pandas ist ziemlich komplex und 
> hält immer eine Überraschung bereit:
> 
>  >>> df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
>  >>> ser = df.loc[df.A == 1, "B"]
>  >>> ser[0]
> 4
> 
> Scheint zu funktionieren, ist aber Zufall:
> 
>  >>> ser = df.loc[df.A == 2, "B"]
>  >>> ser[0]
> Traceback (most recent call last):
> [...]
> KeyError: 0

Wenn du das erste Element möchtest solltest du den Zugriff "position based" [1]
machen:

 >>> ser.iloc[0]
5

Dagegen ist:

 >>> ser[0]

"label based"

und entspricht:

 >>> ser.loc[0]

Außerdem kann man nach `loc` und `iloc` besser googeln als nach `[y] = ser`. ;)

[1] 
https://pandas.pydata.org/docs/user_guide/indexing.html#different-choices-for-indexing

> 
> Mit Unpacking:
> 
>  >>> [y] = ser
>  >>> y
> 5
> 
> D. h. eine Series verhält sich beim Iterieren wie eine Liste, beim Lookup wie 
> ein dict.
> 
> _______________________________________________
> python-de maillist  -  python-de@python.org
> https://mail.python.org/mailman/listinfo/python-de

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Verstaendnisproblem Mike Müller <mmueller@python-academy.de> - 2021-02-12 21:32 +0100

csiph-web