【发布时间】:2019-01-23 10:54:46
【问题描述】:
我想从系列构建一个矩阵,但在此之前我必须重新采样这些系列。但是,为了避免使用 replace(np.nan, 0.0) 处理整个矩阵两次,我想将数据帧附加到收集数据帧,然后一次性删除 NaN 值。
所以不是
user_activities = user.groupby(["DOC_ACC_DT", "DOC_ACTV_CD"]).agg("sum")["SUM_DOC_CNT"].unstack().resample("1D").replace(np.nan, 0)
df = df.append(user_activities[activity].rename(user_id))
我想要
user_activities = user.groupby(["DOC_ACC_DT", "DOC_ACTV_CD"]).agg("sum")["SUM_DOC_CNT"].unstack().resample("1D")
df = df.append(user_activities[activity].rename(user_id))
但这不起作用,因为user_activities 不是resample() 之后的数据框。
错误提示我尝试apply(),但该方法需要一个参数:
/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.pyc in _make_wrapper(self, name)
507 "using the 'apply' method".format(kind, name,
508 type(self).__name__))
--> 509 raise AttributeError(msg)
510
511 # need to setup the selection
AttributeError: Cannot access callable attribute 'rename' of 'SeriesGroupBy' objects, try using the 'apply' method
我该如何解决这个问题?
【问题讨论】:
-
user_activities在resample之后是什么? -
resample 不再返回数据帧:它现在在聚合或插值时“延迟评估”。 => 根据您的用例,将
.resample("1D")替换为.resample("1D").mean()(即缩小)或.resample("1D").interpolate()(放大)可能是您所追求的,它们都返回一个数据框。