我的pandas DataFrame主要填充了实数,但是其中也包含一些nan值。
如何nan用列的平均值替换s?
这个问题与这个问题非常相似:numpy array:用列的平均值替换nan值, 但是不幸的是,给出的解决方案不适用于pandas DataFrame。
你可以直接使用DataFrame.fillna
来nan直接填充:
In [27]: df
Out[27]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 NaN -2.027325 1.533582
4 NaN NaN 0.461821
5 -0.788073 NaN NaN
6 -0.916080 -0.612343 NaN
7 -0.887858 1.033826 NaN
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
In [28]: df.mean()
Out[28]:
A -0.151121
B -0.231291
C -0.530307
dtype: float64
In [29]: df.fillna(df.mean())
Out[29]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 -0.151121 -2.027325 1.533582
4 -0.151121 -0.231291 0.461821
5 -0.788073 -0.231291 -0.530307
6 -0.916080 -0.612343 -0.530307
7 -0.887858 1.033826 -0.530307
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
的文档字符串fillna
说,value
应该是一个标量或快译通,但是,它似乎工作用Series
为好。如果你想通过字典,可以使用df.mean().to_dict()
。
我有一个pandas DataFrame,其中大部分都是实数,但也有一些值。
问题内容: 我有一个numpy数组,其中大多数都用实数填充,但是其中也包含一些值。 如何用列的平均值替换s? 问题答案: 无需循环:
问题内容: 假设我有一个带有 的DataFrame : 我需要做的是用上方的同一列中NaN的第一个非NaN值替换每个值。假设第一行永远不会包含NaN。因此,对于前面的示例,结果将是 我可以遍历整个DataFrame的逐列,逐元素并直接设置值,但是是否有一种简单的方法(最佳无循环方法)来实现这一点? 问题答案: 你可以在上使用该方法,并将该方法指定为ffill(正向填充): 这个方法 将上一个有效观
问题内容: 我正在尝试学习熊猫,但请对以下内容感到困惑。我想用行平均值替换NaN是一个数据框。因此,类似的东西应该可以工作,但是由于某种原因,它对我来说是失败的。我是否想念任何东西,我做错了什么?是因为其未执行; 但是这样的事情看起来很好 问题答案: 如评论所述,fillna的axis参数为NotImplemented。 注意:这在这里很重要,因为您不想用第n行平均值填写第n列。 现在,您需要遍历
问题内容: 我有一个熊猫数据框,其中包含每月数据,我想为其计算12个月的移动平均值。但是缺少一月每个月的数据(NaN),所以我正在使用 但这只是给我所有的NaN值。 有没有一种简单的方法可以忽略NaN值?我了解实际上,这将成为11个月的移动平均值。 数据框还有其他包含一月数据的变量,所以我不想只扔掉一月的列并进行11个月的移动平均。 问题答案: 有几种方法可以解决此问题,最好的方法取决于一月份的数
问题内容: 如何沿着矩阵计算矩阵均值,但要从计算中删除值?(对于R人,请考虑)。 这是我的[非]工作示例: 除去NaN之后,我的预期输出为: 问题答案: 我认为您想要的是一个蒙版数组: 编辑: 合并所有时序数据 返回值: