python - DataFrame 行为异常?
问题描述
我在这里发疯,试图理解为什么这段代码给了我不同的结果......即使我输入(我认为)相同的数字,平均值计算也不同?
max_underlag = 0.0
df.loc[df.Gräskvot < 1-max_underlag, 'Gräskvot'] = 1-max_underlag
df.loc[df.Gräskvot > 1+max_underlag, 'Gräskvot'] = 1+max_underlag
df.loc[df.Plastkvot < 1-max_underlag, 'Plastkvot'] = 1-max_underlag
df.loc[df.Plastkvot > 1+max_underlag, 'Plastkvot'] = 1+max_underlag
print(df.loc[:, ("mp_h", "mp_b", "Gräskvot", "Plastkvot")].tail())
#df.mp_h = (df.mp_h / df.Plastkvot).where((df.Underlag == "Plast"), df.mp_h / df.Gräskvot)
#df.mp_b = (df.mp_b * df.Plastkvot).where((df.Underlag == "Plast"), df.mp_b * df.Gräskvot)
print("\n",df.loc[:, ("mp_h", "mp_b", "Gräskvot", "Plastkvot")].tail())
df["mp_snitt_h_framåt"] = round(df.groupby(['Hemmalag'])['mp_h'].transform(lambda x: x.expanding().mean().shift()), 2)
df["mp_snitt_h_bakåt"] = round(df.groupby(['Hemmalag'])['mp_b'].transform(lambda x: x.expanding().mean().shift()), 2)
print("\n",df.loc[:, ("mp_snitt_h_framåt", "mp_snitt_h_bakåt")].tail())
代码给了我这个结果:
mp_h mp_b Gräskvot Plastkvot
777 0.68 0.66 1.0 1.0
778 0.87 1.13 1.0 1.0
779 2.40 2.40 1.0 1.0
780 NaN NaN 1.0 1.0
781 1.12 0.88 1.0 1.0
mp_h mp_b Gräskvot Plastkvot
777 0.68 0.66 1.0 1.0
778 0.87 1.13 1.0 1.0
779 2.40 2.40 1.0 1.0
780 NaN NaN 1.0 1.0
781 1.12 0.88 1.0 1.0
mp_snitt_h_framåt mp_snitt_h_bakåt
777 1.79 1.42
778 1.34 1.34
779 1.59 1.80
780 1.61 1.54
781 1.41 1.72
当我删除 #:si 时应该得到相同的结果,因为“GRäskvot”和“Plastkvot”设置为 1,因此不会更改“mp_h”或“mp_b”。
mp_h mp_b Gräskvot Plastkvot
777 0.68 0.66 1.0 1.0
778 0.87 1.13 1.0 1.0
779 2.40 2.40 1.0 1.0
780 NaN NaN 1.0 1.0
781 1.12 0.88 1.0 1.0
mp_h mp_b Gräskvot Plastkvot
777 0.68 0.66 1.0 1.0
778 0.87 1.13 1.0 1.0
779 2.40 2.40 1.0 1.0
780 NaN NaN 1.0 1.0
781 1.12 0.88 1.0 1.0
mp_snitt_h_framåt mp_snitt_h_bakåt
777 1.79 1.37
778 1.32 1.31
779 1.53 1.83
780 1.60 1.61
781 1.31 1.70
既然 mp_h 和 mp_b 相同,那么“mp_snitt_h_framåt”和“mp_snitt_h_bakåt”怎么会不同呢?我想我在这里遗漏了一些基本的东西。
解决方案
问题解决了。我在“Gräskvot”和“Plastkvot”中有一堆 NaN,当然在“mp_h”和“mp_b”中创建了一堆 NaN
一个让我很头疼的愚蠢错误……抱歉浪费了您的时间!
推荐阅读
- python - 如何处理循环中不存在的字典键?
- r - 在 R 中使用两个几何对 sf 进行几何运算
- laravel - 在 Laravel 6 中进行单元测试时处理模型关系状态/状态的最佳方法?
- android - Android GradientDrawable 在布局编辑器预览中看起来不同
- go - 如何将 go list -u -m all 与 vendoring 模式一起使用?
- javascript - Keydown 与第二次键盘点击一起工作
- regex - 正则表达式:捕获给定分隔符内的重复块(在 MATLAB 中)
- reactjs - 反应钩子内的反应类组件 - DOM不更新
- python - 如何计算二维表中选定的单词
- c# - C# ClientWebSocket 没有接收到所有数据包?