我有一个数据框 df
,有很多 Student_ID
,但在这里我给出了 df
的一部分,如下所示:
Student_Id Exam_Date feedback_given ExamID
1001 01-05-2021 no physics:preparatory:1
1001 NaN NaN math:preparatory:2
1001 01-05-2021 yes physics:midterm:1
1001 NaN yes Biology:preparatory:1
1001 02-05-2021 NaN Biology:preparatory:2
1002 NaN yes physics:midterm:1
1002 NaN yes Biology:preparatory:1
如果可能的话,如何使用 Exam_dates
或 ffill()
或以任何其他方式填充 bfill()
,以便我可以填充 Exam_Date
For { {1}}。
注意:在上面的 Student_Id
中,df
有 Student_Id ==1002
作为 Exam_Date
,所以我想保留它 NaN
本身,仅填充 NaN
(即,如果 Student_Id ==1001
中的任何一个将所有 Student_ID
都设为空白,我希望它与 Exam_Date
保持相同)。
输出 NaN
:
df
在此先感谢您的帮助! :)
答案 0 :(得分:1)
你应该先groupby
然后ffill
,即:
df['Exam_Date'] = df.groupby('Student_Id')['Exam_Date'].ffill()
输出:
Student_Id Exam_Date feedback_given ExamID
0 1001 01-05-2021 no physics:preparatory:1
1 1001 01-05-2021 NaN math:preparatory:2
2 1001 01-05-2021 yes physics:midterm:1
3 1001 01-05-2021 yes Biology:preparatory:1
4 1001 02-05-2021 NaN Biology:preparatory:2
5 1002 NaN yes physics:midterm:1
6 1002 NaN yes Biology:preparatory:1