我正在寻找:
1-查看一个系列(数量(的所有值
2-动态突出显示所有属于标准(在本例中为abs(1.5(数量单位(的内容,并在另一个系列(附近(中使用"标志"。
3 - 如果是 True 值,则标志应显示由空格或其他字符分隔的所有索引值
下面的数据帧显示近似序列中的所需结果。
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
有什么想法吗?提前谢谢你。
Pandas 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