Ich musste ein Diktat ausgewählter Werte in Gruppen von einem Dataframe ("gruppiert") gebaut bauen. idcolumn war eine Liste von einem String ["column_name"] (Ich habe es zu einer Liste gemacht, weil ich irgendwann einen anderen String/Spaltennamen für Operationen mit Labels anhängen musste).Strange groupby/Dataframe Verhalten mit Liste()
so habe ich als meine die Gruppen diese Anweisung abzurufen:
grouped.get_group(k).loc[:,idcolumn]
, die
grouped.get_group(k).loc[:,idcolumn[0]]
Ausgabe eines Datenrahmen der ausgewählten Daten mit [ „column_name“] vollkommen identisch arbeitet als Header.
Mein vollständiger Ausdruck war:
dict_to_build= {k: list(grouped.get_group(k).loc[:,idcolumn]) for k in grouped.groups.keys() }
aber ich hatte einen sehr seltsamen Fehler.
Das eingebaute dict enthält alle Schlüssel, aber als eindeutigen Wert "column_name". Während, wenn ich
dict_to_build= {k: list(grouped.get_group(k).loc[:,idcolumn[0]) for k in grouped.groups.keys() }
Die dict verwenden ist völlig in Ordnung.
als wie dies beispielhaft dargestellt:
In [115]: pde=pd.DataFrame({"a":[1,2,3,1,2,3], "column_name":["a","b","c","d","e","f"]})
In [116]: pde
Out[116]:
a column_name
0 1 a
1 2 b
2 3 c
3 1 d
4 2 e
5 3 f
In [117]: grouped=pde.groupby[1]
Traceback (most recent call last):
File "<ipython-input-117-b504dadfee12>", line 1, in <module>
grouped=pde.groupby[1]
TypeError: 'method' object is not subscriptable
In [118]: grouped=pde.groupby("a")
In [119]: grouped.get_group(1).loc[:,"column_name"]
Out[119]:
0 a
3 d
Name: column_name, dtype: object
In [120]: list(grouped.get_group(1).loc[:,"column_name"])
Out[120]: ['a', 'd']
In [121]: list(grouped.get_group(1).loc[:,["column_name"]])
Out[121]: ['column_name']
jemand über mich aufklären kann, was geschieht? Es ist absolut seltsam für mich. Kommt das Problem von Datenframes, loc mit Liste als Parameter oder der Listenfunktion?
Macht perfekten Sinn;) Vielen Dank! –
Gern geschehen! – Allen