首页 > 解决方案 > 我应该如何使用上一行的 fillna 结果填充 na?

问题描述

假设我有以下数据框...

money change
2     2
1     1 
na    2
na    2
na    1
1     1

我希望 na 值是前一个值加上前一行的更改值。请注意,非 nan 条目不一定遵循此模式。我应该如何填写货币列下的 na 条目,使其如下所示...

money change
2     2
1     1 
2     2
4     2
6     1
1     1

标签: pandas

解决方案


我已经通过使用简单的概念解决了python's dictionary。请检查:

dfDict = df.to_dict(orient='records')
prevMoney = 0
prevChange = 0
outDictList = []
for aDict in dfDict:
    curMoney = aDict['money']
    curChange = aDict['change']
    if str(aDict['money'])=='nan':
        aDict['money'] = prevMoney + prevChange
    prevMoney = curMoney
    prevChange = curChange
    outDictList.append(aDict)

pd.DataFrame(outDictList)

输出:

   change  money
0     2.0    2.0
1     1.0    1.0
2     2.0    2.0
3     2.0    4.0
4     1.0    6.0
5     1.0    1.0

推荐阅读