EDIT: Die folgende Antwort ist nur gültig für Versionen von Pandas weniger als 0.15.0. Wenn Sie Pandas 15 oder höher verwenden, finden Sie unter:
data3['bins_spd'] = pd.qcut(data3['spd_pct'], 5, labels=False)
Dank @unutbu für Hinweis darauf. :)
Angenommen, Sie haben einige Daten, die Sie ablegen möchten, in meinem Fall Optionen Spreads, und Sie möchten eine neue Variable mit den Buckets entsprechend jeder Beobachtung machen. Der Link oben erwähnt, dass Sie dies tun können:
print pd.qcut(data3['spd_pct'], 40)
(0.087, 0.146]
(0.0548, 0.087]
(0.146, 0.5]
(0.146, 0.5]
(0.087, 0.146]
(0.0548, 0.087]
(0.5, 2]
, die Sie gibt, was die bin Endpunkte sind, die für jede Beobachtung entsprechen. Wenn Sie jedoch für jede Beobachtung die entsprechenden Fachnummern möchten, dann können Sie dies tun:
print pd.qcut(data3['spd_pct'],5).labels
[2 1 3 ..., 0 1 4]
setzen sie alle zusammen, wenn Sie nur die Fachnummern eine neue Variable erstellen mit möchte, sollte dies genügen:
data3['bins_spd']=pd.qcut(data3['spd_pct'],5).labels
print data3.head()
secid date symbol symbol_flag exdate last_date cp_flag 0 5005 1/2/1997 099F2.37 0 1/18/1997 NaN P
1 5005 1/2/1997 09B0B.1B 0 2/22/1997 12/3/1996 P
2 5005 1/2/1997 09B7C.2F 0 2/22/1997 12/11/1996 P
3 5005 1/2/1997 09EE6.6E 0 1/18/1997 12/27/1996 C
4 5005 1/2/1997 09F2F.CE 0 8/16/1997 NaN P
strike_price best_bid best_offer ... close volume_y return 0 7500 2.875 3.2500 ... 4.5 99200 0.074627
1 10000 5.375 5.7500 ... 4.5 99200 0.074627
2 5000 0.625 0.8750 ... 4.5 99200 0.074627
3 5000 0.125 0.1875 ... 4.5 99200 0.074627
4 7500 3.000 3.3750 ... 4.5 99200 0.074627
cfadj_y open cfret shrout mid spd_pct bins_spd
0 1 4.5 1 57735 3.06250 0.122449 2
1 1 4.5 1 57735 5.56250 0.067416 1
2 1 4.5 1 57735 0.75000 0.333333 3
3 1 4.5 1 57735 0.15625 0.400000 3
4 1 4.5 1 57735 3.18750 0.117647 2
[5 rows x 35 columns]
Hoffe das hilft jemand anderem. Zumindest sollte es einfacher sein, jetzt zu suchen. :)
Großartig! Das war mir nicht bewusst. Danke, dass du es aufgezeigt hast. – sfortney