čo môže byť veľmi jednoduchá otázka, ale snažím sa pochopiť, ako zoskupovanie a indexovanie funguje v pandách.
Povedzme, že mám DataFrame s nasledujúcimi údajmi:
df = pd.DataFrame(data={
"p_id": [1, 1, 1, 2, 3, 3, 3, 4, 4],
"rating": [5, 3, 2, 2, 5, 1, 3, 4, 5]
})
Teraz by sa index priradil automaticky, takže DataFrame vyzerá takto:
p_id rating
0 1 5
1 1 3
2 1 2
3 2 2
4 3 5
5 3 1
6 3 3
7 4 4
8 4 5
Keď sa pokúsim zoskupiť ho p_id, dostanem:
>> df[["p_id", "rating"]].groupby("p_id").count()
rating
p_id
1 3
2 1
3 3
4 2
Všimol som si, že p_id sa teraz stáva indexom pre tento DataFrame, ale prvý riadok mi vyzerá divne - prečo má v ňom index "p_id" s prázdnym ratingom?
Viem, ako to napraviť, ak to urobím:
>> df[["p_id", "rating"]].groupby("p_id", as_index=False).count()
p_id rating
0 1 3
1 2 1
2 3 3
3 4 2
Teraz nemám tento zvláštny prvý stĺpec, ale mám index aj p_id.
Takže moja otázka je, kde to robí tento extra riadokpochádzajúce z toho, keď nepoužívam as_index = False a existuje spôsob, ako zoskupiť DataFrame a udržať p_id ako index, pričom sa nemusím zaoberať týmto extra riadkom? Ak existujú nejaké dokumenty, ktoré by som si mohol prečítať, bolo by to tiež veľmi ocenil.
Vďaka
odpovede:
2 pre odpoveď č. 1Je to len indexové meno ...
demo:
In [46]: df
Out[46]:
p_id rating
0 1 5
1 1 3
2 1 2
3 2 2
4 3 5
5 3 1
6 3 3
7 4 4
8 4 5
In [47]: df.index.name = "AAA"
dávajte pozor na názov indexu: AAA
In [48]: df
Out[48]:
p_id rating
AAA
0 1 5
1 1 3
2 1 2
3 2 2
4 3 5
5 3 1
6 3 3
7 4 4
8 4 5
Môžete sa ho zbaviť rename_axis () metóda:
In [42]: df[["p_id", "rating"]].groupby("p_id").count().rename_axis(None)
Out[42]:
rating
1 3
2 1
3 3
4 2