以下是一个示例代码,用于按ID分组,并检查值是否在误差范围内相同:
import pandas as pd
# 创建示例数据
data = {'ID': [1, 1, 2, 2, 3, 3],
'Value': [10.5, 10.6, 20.1, 20.3, 30.2, 30.4]}
df = pd.DataFrame(data)
# 设置误差范围
tolerance = 0.1
# 按ID分组并检查值是否在误差范围内相同
result = df.groupby('ID')['Value'].apply(lambda x: all(abs(x - x.mean()) <= tolerance))
print(result)
输出结果如下:
ID
1 True
2 False
3 False
Name: Value, dtype: bool
解释:
在示例中,我们首先创建了一个包含ID和Value列的DataFrame。然后,我们设置了一个误差范围为0.1。
接下来,我们使用groupby
方法按ID分组,并使用apply
方法应用一个lambda函数。lambda函数比较每个分组中的值与该分组的平均值之间的绝对差,并检查是否所有差值都小于等于给定的误差范围。最后,我们得到了一个布尔Series,指示每个ID组是否所有值都在误差范围内相同。
在示例中,ID为1的组中的所有值都在误差范围内相同,所以返回True。而ID为2和3的组中的值不在误差范围内相同,所以返回False。