![](/img/trans.png)
[英]Matching two pandas series: How to find a string element from one series in another series and then create a new column
[英]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.