当列值匹配时,Pandas Dataframe从行中替换Nan

Mah*_*a M 6 python nan python-3.x pandas

我有数据框,即

Input Dataframe

      class  section  sub  marks  school  city
0     I      A        Eng  80     jghss   salem
1     I      A        Mat  90     jghss   salem 
2     I      A        Eng  50     Nan     salem 
3     III    A        Eng  80     gphss   Nan
4     III    A        Mat  45     Nan     salem
5     III    A        Eng  40     gphss   Nan
6     III    A        Eng  20     gphss   salem
7     III    A        Mat  55     gphss   Nan
Run Code Online (Sandbox Code Playgroud)

当“班级”和“部分”列中的值匹配时,我需要替换“学校”和“城市”中的“南”。最终结果应该是输入数据框

      class  section  sub  marks  school  city
0     I      A        Eng  80     jghss   salem
1     I      A        Mat  90     jghss   salem 
2     I      A        Eng  50     jghss   salem 
3     III    A        Eng  80     gphss   salem
4     III    A        Mat  45     gphss   salem
5     III    A        Eng  40     gphss   salem
6     III    A        Eng  20     gphss   salem
7     III    A        Mat  55     gphss   salem
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

jez*_*ael 7

对于每个组合,每组相同的值必须lambda function在列表中指定的列中使用DataFrame.groupby- 向前和向后填充缺少的每组缺失值:

cols = ['school','city']
df[cols] = df.groupby(['class','section'])[cols].apply(lambda x: x.ffill().bfill())
print (df)
  class section  sub  marks school   city
0     I       A  Eng     80  jghss  salem
1     I       A  Mat     90  jghss  salem
2     I       A  Eng     50  jghss  salem
3   III       A  Eng     80  gphss  salem
4   III       A  Mat     45  gphss  salem
5   III       A  Eng     40  gphss  salem
6   III       A  Eng     20  gphss  salem
7   III       A  Mat     55  gphss  salem
Run Code Online (Sandbox Code Playgroud)

  • @MahamuthaM-您能解释更多吗?没有替代?在解决方案之前,请尝试使用df = df.replace(['Nan','NaN'],np.nan)。 (3认同)