gpt4 book ai didi

python - 浮点比较不适用于 pandas groupby 输出

转载 作者:行者123 更新时间:2023-12-01 02:18:49 25 4
gpt4 key购买 nike

我遇到了 pandas 行过滤问题。我正在尝试过滤掉权重总和不等于 1 的团队。

dfteam
Team Weight
A 0.2
A 0.5
A 0.2
A 0.1
B 0.5
B 0.25
B 0.25

dfteamtemp = dfteam.groupby(['Team'], as_index=False)['Weight'].sum()
dfweight = dfteamtemp[(dfteamtemp['Weight'].astype(float)!=1.0)]

dfweight
Team Weight
0 A 1.0

我不确定此输出的原因。我应该得到一个空数据框,但它给了我团队 A,即使总和是 1。

最佳答案

You are a victim of floating point inaccuracies 。第一个值加起来并不完全等于 1.0 -

df.groupby('Team').Weight.sum().iat[0]
0.99999999999999989

您可以使用 np.isclose 解决此问题相反 -

np.isclose(df.groupby('Team').Weight.sum(), 1.0)
array([ True, True], dtype=bool)

并在此数组上进行过滤。或者,正如 @ayhan 建议的那样,使用 groupby + filter -

df.groupby('Team').filter(lambda x: not np.isclose(x['Weight'].sum(), 1))

Empty DataFrame
Columns: [Team, Weight]
Index: []

关于python - 浮点比较不适用于 pandas groupby 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48139112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com