我有以下数据框:
import pandas as pd
import numpy as np
data = {
"index": [1, 2, 3, 4, 5],
"A": [11, 17, 5, 9, 10],
"B": [8, 6, 16, 17, 9],
"C": [10, 17, 12, 13, 15],
"target": [12, 13, 8, 6, 12]
}
df = pd.DataFrame.from_dict(data)
print(df)
我想在 A、B 和 C 列中找到列目标的最接近值,并将这些值放入列结果中。据我所知,我需要使用abs()和argmin()函数。
这是我期望的输出:
index A B C target result
0 1 11 8 10 12 11
1 2 17 6 17 13 17
2 3 5 16 12 8 5
3 4 9 17 13 6 9
4 5 10 9 15 12 10
以下是我从 stackoverflow 找到的解决方案和链接,这可能会有所帮助:
(df.assign(closest=df.apply(lambda x: x.abs().argmin(), axis='columns'))
.apply(lambda x: x[x['target']], axis='columns'))
使用 Pandas 识别每个过滤器列中最接近的值
https://codereview.stackexchange.com/questions/204549/lookup-closest-value-in-pandas-dataframe