Ich versuche, Quantile basierend auf Spalte J1 innerhalb jeder ID-Gruppe in den folgenden Datenrahmen hinzuzufügen.Zuweisen von Quantilen in Pandas Gruppen
import pandas as pd
try_df = pd.DataFrame({'ID':['1','1','1','1','1','2','2','2','2','2','3','3','3','3','3'], 'J1': range(15)})
print(try_df)
try_df["quantiles"] = try_df.groupby("ID")["J1"].transform(pd.qcut,4,["Q1","Q2","Q3","Q4"])
ID J1
0 1 0
1 1 1
2 1 2
3 1 3
4 1 4
5 2 5
6 2 6
7 2 7
8 2 8
9 2 9
10 3 10
11 3 11
12 3 12
13 3 13
14 3 14
Der obige Code ergibt einen Wert Fehler: invalid literal for long() with base 10: 'Q4'
In den realen Daten, die es diesen Fehler führt:
ValueError: could not convert string to float: Q2
Vorschläge, wie es zu lösen?
Vielen Dank für Die schnelle Antwort, es funktionierte gut auf die gegebenen Daten, wenn ich das gleiche mache bei realen Daten gibt es einen ValueError: Bin Kanten müssen eindeutig sein: Array ([Nan, Nan, Nan, Nan, Nan, Nan, Nan]). Ich habe einen leeren Wert in den Daten. Irgendeine Idee, was der mögliche Grund sein könnte? Ich habe versucht, es durch eine Nummer zu ersetzen. – Apoorv
@Apoorv Ich kann den Grund für Ihren Fehler angesichts dieser Informationen nicht lokalisieren, aber werfen Sie einen Blick auf https://stackoverflow.com/questions/36880490/why-use-pandas-qcut-return-valueerror-bin-edges-must- be-unique was helfen könnte. –
Danke für den Link! Ich habe diesen Leerwert entfernt und es hat gut funktioniert. Ich denke, Wert ist irgendwie fehlerhaft und wird nicht behandelt. – Apoorv