繁体   English   中英

浮点比较不适用于熊猫groupby输出

[英]Floating point comparison not working on pandas groupby output

我遇到了熊猫对行进行过滤的问题。 我正在尝试滤除权重总和不等于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。

您是浮点错误的受害者 第一个值的总和不等于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: []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM