簡體   English   中英

在一個熊貓系列中找到兩個近似值。 根據條件在另一個上創建標志

[英]Find two approximate values in one Pandas Series. Create a flag on another based on a criteria

我正在尋找:

1-查看一個系列的所有值(數量)

2-用另一個系列中的“標志”(附近)動態突出顯示符合標准(在此示例中,abs(1.5)數量單位)內的所有條件。

3-如果為True,則標志應顯示所有索引值,並用空格或其他字符分隔

下面的DataFrame在附近的系列中顯示所需的結果。

index | quantity |      near
----------------------------------
inv1  |  2017.45 |  no
inv2  |   102.10 |  inv2 inv3 inv6
inv3  |   101.60 |  inv2 inv3 
inv5  |   200.4  |  no
inv6  |   103.39 |  inv2 inv6

有任何想法嗎 ? 先感謝您。

熊貓0.21.1和Python 3.6.5

IIUC:

q = df.quantity.values
x = df['index']

i, j = np.where(np.abs(np.subtract.outer(q, q)) <= 1.5)

df.assign(near=x.map(x[i].groupby(x[j].values).apply(' '.join)))

  index  quantity            near
0  inv1   2017.45            inv1
1  inv2    102.10  inv2 inv3 inv6
2  inv3    101.60       inv2 inv3
3  inv5    200.40            inv5
4  inv6    103.39       inv2 inv6

您可以避免對角線比較

q = df.quantity.values
x = df['index']

m = np.abs(np.subtract.outer(q, q)) <= 1.5
np.fill_diagonal(m, False)
i, j = np.where(m)

df.assign(near=x.map(x[i].groupby(x[j].values).apply(' '.join)).fillna('no'))

  index  quantity       near
0  inv1   2017.45         no
1  inv2    102.10  inv3 inv6
2  inv3    101.60       inv2
3  inv5    200.40         no
4  inv6    103.39       inv2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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