[英]How to efficiently label each value to a bin after I created the bins by pandas.cut() function?
[英]How do I efficiently bin values into overlapping bins using Pandas?
我想將float類型的所有值都綁定到重疊的bin中。 得到的列可以是一系列帶有bool的1-D向量 - 來自原始列的每個值的一個向量。 所產生的載體含有True
的值落入每個bin和False
的其他段。
例如,如果我有四個區間[(0, 10), (7, 20), (15, 30), (30, 60)]
0,10 [(0, 10), (7, 20), (15, 30), (30, 60)]
,並且原始值為9.5,則結果向量應為[True, True, False, False]
。
我知道如何使用'apply'使用自定義函數遍歷所有范圍,但有沒有辦法更有效,更簡潔地執行此分區?
簡單的列表理解能滿足您的需求嗎?
Bins = [(0, 10), (7, 20), (15, 30), (30, 60)]
Result = [((9.5>=y[0])&(9.5<=y[1])) for y in Bins]
如果您的數據存儲在pandas DataFrame( df
)的列data
,那么您可以定義該函數:
def in_ranges(x,bins):
return [((x>=y[0])&(x<=y[1])) for y in bins]
並將其應用於列:
df[data].apply(lambda x: pd.Series(in_ranges(x,Bins),Bins))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.