python - Pandas groupby 变换('mean')skipna=False
问题描述
我想通过 groupby 获得平均值并将其分配给所有行。这是我正在使用的代码。但是,这是忽略 Nan 即 skipna=True。我想通过选项 skipna=False 来获得预期的输出。
df["result"]=df.groupby("id")["cars"].transform('mean')
print (df)
Input dataframe
date id cars
2012 1 4
2013 1 6
2014 1 NaN
2012 2 10
2013 2 20
2014 2 NaN
Current output:
date id cars result
0 2012 1 4.0 5.0
1 2013 1 6.0 5.0
2 2014 1 NaN 5.0
3 2012 2 10.0 15.0
4 2013 2 20.0 15.0
5 2014 2 NaN 15.0
Expected output:
date id cars result
0 2012 1 4.0 3.33
1 2013 1 6.0 3.33
2 2014 1 NaN 3.33
3 2012 2 10.0 10.0
4 2013 2 20.0 10.0
5 2014 2 NaN 10.0
解决方案
df['result'] = df.fillna(0).groupby("id")["cars"].transform('mean')
推荐阅读
- java - 禁用 ScrolledComposite 中的 CheckboxTableViewer 时如何启用滚动?
- java - 录制无头镀铬
- c++ - 如何对齐控制台输出在同一位置的数字
- asp.net - html 元素在 .net core angular 项目模板中出现两次
- arrays - 在excel中,如何计算字符串中数字的总和?
- python - 多类分类和概率预测
- mysql - 如何确保外键在表中只能出现有限的次数
- java - 谷歌云端点。动态省略属性 - 通过 api 方法
- php - 给定 Symfony 的“字符串”、“日期时间”类型的预期参数
- python - 在 Python 中使用 mysqldb 连接 ipv6 服务器