首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fillNa(0)反而不产生任何

fillNa(0)反而不产生任何
EN

Stack Overflow用户
提问于 2018-09-21 19:38:32
回答 1查看 368关注 0票数 2

我的问题就在下面的代码片段下面:

我有原始传感器时间序列数据..。现在已经接近可用了:)

代码语言:javascript
复制
locDf = locationDf.copy()
locDf.set_index('date', inplace=True)

locDfs = {}
for user, user_loc_dc in locDf.groupby('user'):
    locDfs[user] = user_loc_dc.resample('15T').agg('max').bfill()

aDf = appDf.copy()
aDf.set_index('date', inplace=True)

userLocAppDfs = {}
appDfs = []
for user, a2_df in aDf.groupby('user'):
    userDf = a2_df.resample('15T').agg('min')

    userDf.reset_index(inplace=True)
    userDf = pd.crosstab(index=userDf['date'], columns=userDf['app'], values=userDf['metric'], aggfunc=np.mean).fillna(0, downcast='infer')

    userDf['user'] = user

    userDf.reset_index(inplace=True)
    userDf.set_index('date', inplace=True)

    appDfs.append(userDf)
    userLocAppDfs[user] = userDf

    loDf = locDfs[user]
    loDf.reset_index(inplace=True)
    loDf = pd.crosstab([loDf.date, loDf.user], loDf.location)
    loDf.reset_index(inplace=True)

    loDf.set_index('date', inplace=True)
    loDf.drop('user', axis=1, inplace=True)

    userLocAppDfs[user] = userLocAppDfs[user].join(loDf, how='outer')
    userLocAppDfs[user]['user'].fillna(user, inplace=True)

    #for app in a2_df['app'].unique():
    #    userLocAppDfs[user][app] = userLocAppDfs[user][app].fillna(0, inplace=True)


userLocAppDfs['user_1'].head(5)

问题

如果我取消对最后两行的注释,试图在开始时填充NaN,我就不会得到零。我什么都没得到。) :(有人能告诉我为什么吗?

我想..。你知道,0在那里:

代码语言:javascript
复制
2017-08-28 00:00:00 0   0   user_1  0.0 0.0 0.0 1.0 0.0
2017-08-28 00:15:00 0   0   user_1  0.0 0.0 1.0 0.0 0.0
2017-08-28 00:30:00 0   0   user_1  0.0 0.0 1.0 0.0 0.0
2017-08-28 00:45:00 0   0   user_1  0.0 0.0 1.0 0.0 0.0
2017-08-28 01:00:00 0   0   user_1  0.0 0.0 1.0 0.0 0.0

最后一步是让我得到这些app_*数的滚动平均值,这样我就得到了一条曲线。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 20:42:46

试一试

代码语言:javascript
复制
for app in a2_df['app'].unique():
    userLocAppDfs[user][app].fillna(0, inplace=True)
    # or userLocAppDfs[user][app] = userLocAppDfs[user][app].fillna(0)

因此,这是因为您已经指定了inplace = True,并同时将其重新分配。

注意,df.fillna(0, inplace=True)不会返回一个值。相反,它将直接修改原始的df。试试print(df.fillna(0, inplace=True)),它会给你None。因此,上面所做的就是将None分配给列apps

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52450148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档