假设我有一个如下数据框:
Roll No | Name | School | Year | Total Marks | Previous Marks
------------------------------------------------------------------------
1001 | abc | iisr | 2005 | 595 | NaN
1002 | amr | iisd | 2005 | 599 | NaN
1001 | abc | iisr | 2006 | NaN | 580
1003 | def | hmms | 2005 | 600 | 575
1002 | amr | iisd | 2006 | NaN | 590
1004 | ghi | aaiisr | 2005 | 580 | NaN
1005 | jkl | ups | 2005 | 599 | 500
1001 | abc | iisr | 2007 | 597 | NaN
1002 | amr | iisd | 2007 | 600 | NaN
1005 | jkl | ups | 2006 | NaN | 503
1006 | mno | iisr | 2005 | NaN | 480
1001 | abc | iisr | 2008 | NaN | 575
1007 | pqr | kms | 2005 | NaN | 575
1002 | amr | iisd | 2008 | NaN | 499
我想前向填充列Total Marks
,Previous Marks
以便对于特定Roll No
的空值被它们之前出现的值替换。
例如,在Total Marks
列中,Roll No 1001 的值是595
2005 年、NaN
2006 年、597
2007 年和NaN
2008 年的值。我希望将 2006 年 1001 的空值替换为其先前填充的分数(即 2005 年的分数),将 2007 年的空值替换为 2008 年的分数。如果没有找到之前的值,则将其设为NaN
。列应用相同的逻辑Previous Marks
。
以上述格式前向填充后,我的最终数据帧应如下所示:
Roll No | Name | School | Year | Total Marks | Previous Marks
------------------------------------------------------------------------
1001 | abc | iisr | 2005 | 595 | NaN
1002 | amr | iisd | 2005 | 599 | NaN
1001 | abc | iisr | 2006 | 595 | 580
1003 | def | hmms | 2005 | 600 | 575
1002 | amr | iisd | 2006 | 599 | 590
1004 | ghi | aaiisr | 2005 | 580 | NaN
1005 | jkl | ups | 2005 | 599 | 500
1001 | abc | iisr | 2007 | 597 | 580
1002 | amr | iisd | 2007 | 600 | 590
1005 | jkl | ups | 2006 | 599 | 503
1006 | mno | iisr | 2005 | NaN | 480
1001 | abc | iisr | 2008 | 597 | 575
1007 | pqr | kms | 2005 | NaN | 575
1002 | amr | iisd | 2008 | 600 | 499
我在 StackOverflow、GeeksForGeeks 和 pandas 文档中也为 pandasffil()
函数提到了几个解决方案,但没有太大帮助。有什么想法可以实现吗?