我有一个看起来像这样的数据框
pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C2', 'C2'],
...: 'B': [1, 3, 6, 9, 2, 3, 4, 8]})
Out[3]:
A B
0 C1 1
1 C1 3
2 C1 6
3 C1 9
4 C2 2
5 C2 3
6 C2 4
7 C2 8
对于“ A”列中的每个组,我需要找到最接近5的值。
我得到的数据框应该看起来像这样
A B C
0 C1 1 False
1 C1 3 False
2 C1 6 True
3 C1 9 False
4 C2 2 False
5 C2 3 False
6 C2 4 True
7 C2 8 False
逻辑
组“ C1”中的6最接近5 组“ C2”中的4最接近5
如何用理想的1行代码来实现?
答案 0 :(得分:5)
这是您进行编码的逻辑,虽然不是一行:
# distance to 5
s=df['B'].sub(5).abs()
# groupby 'A' and find the min
df['C'] = s == s.groupby(df['A']).transform('min')
输出:
A B C
0 C1 1 False
1 C1 3 False
2 C1 6 True
3 C1 9 False
4 C2 2 False
5 C2 3 False
6 C2 4 True
7 C2 8 False