CHỈNH SỬA: Câu trả lời dưới đây chỉ hợp lệ đối với các phiên bản của Pandas nhỏ hơn 0.15.0. Nếu bạn đang chạy Pandas 15 trở lên, hãy xem:
data3['bins_spd'] = pd.qcut(data3['spd_pct'], 5, labels=False)
Nhờ @unutbu vì đã chỉ ra. :)
Giả sử bạn có một số dữ liệu bạn muốn bin, trong trường hợp tùy chọn của tôi lan truyền và bạn muốn tạo biến mới với các nhóm tương ứng với mỗi quan sát. Liên kết được đề cập ở trên mà bạn có thể thực hiện điều này bằng cách:
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]
cung cấp cho bạn điểm cuối bin tương ứng với mỗi quan sát. Tuy nhiên, nếu bạn muốn những con số bin tương ứng cho mỗi quan sát thì bạn có thể làm điều này:
print pd.qcut(data3['spd_pct'],5).labels
[2 1 3 ..., 0 1 4]
Đưa nó tất cả cùng nhau nếu bạn muốn tạo một biến mới với chỉ số bin, điều này sẽ đủ:
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]
Hy vọng điều này sẽ giúp người khác. Ít nhất thì việc tìm kiếm ngay bây giờ cũng dễ dàng hơn. :)
Tuyệt vời! Tôi đã không nhận thức được điều đó. Cảm ơn vì chỉ ra điều ấy. – sfortney