要么我不理解documentation要么它已经过时了。
如果我跑
user[["DOC_ACC_DT", "USER_SIGNON_ID"]].groupby("DOC_ACC_DT").agg(["count"]).resample("1D").fillna(value=0, method="ffill")
它得到
TypeError: fillna() got an unexpected keyword argument 'value'
如果我只是跑
.fillna(0)
我明白了
ValueError: Invalid fill method. Expecting pad (ffill), backfill (bfill) or nearest. Got 0
如果我这样做
.fillna(0, method="ffill")
我明白了
TypeError: fillna() got multiple values for keyword argument 'method'
所以唯一有效的是
.fillna("ffill")
但这当然只是一个向前填充。但是,我想用零替换NaN
。我在这里做错什么了?
直接使用
fillna
的唯一解决方法是在执行.head(len(df.index))
之后调用它。我认为^{} 在这种情况下是有用的,主要是因为当重采样函数应用于groupby对象时,它将充当输入的过滤器,由于组的消除而返回原始对象的简化形状。
调用
DF.head()
不受此转换的影响,并返回整个DF
。演示:
操作:
好吧,我不明白为什么上面的代码不起作用,我要等有人给出比这更好的答案,但我发现
做我想从
.fillna(0)
得到的事情。我做了一些测试,很有趣。
样品:
下采样:
使用^{} 可能的解决方案:
如果使用
asfreq
,则行为与通过first
聚合相同:如果使用
replace
,则另一个值聚合为mean
:上采样:
使用
asfreq
,它与replace
相同:结论:
对于下采样,使用相同的聚合函数,如
sum
、first
或mean
,对于上采样asfreq
。相关问题 更多 >
编程相关推荐