簡體   English   中英

如何使用Pandas有效地將值分成重疊的bin?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM