Qyouu
你可以试试条件填充df = pd.DataFrame([["Sam" , 17 , "E"],["Chris" , 0 , "B"],["Tom" , 19 , "P"],["Sam" , 22 , np.nan],["Chris" , 18 , np.nan],["Tom" , 7 , np.nan], ] ,columns=['Name', "Age", "Ethnicity"])然后 df.loc[df.Ethnicity.isnull(), 'Ethnicity'] = \ df.loc[df.Ethnicity.isnull(), 'Name'].map(df.loc[df.Ethnicity.notnull()] \ .set_index('Name')['Ethnicity'])输出: Name Age Ethnicity0 Sam 17 E1 Chris 0 B2 Tom 19 P3 Sam 22 E4 Chris 18 B5 Tom 7 P但是,如果您确定 NaN 值的名称始终具有相应的名称,那么您可以使用 group bydf["Ethnicity"] = df.groupby('Name').ffill()["Ethnicity"]
白衣非少年
如果需要,请尝试排序和 ffill()。最后 sort_index()。如下所示。我使用了随机 dfdf = pd.DataFrame({'A':['a', 'c', 'f', 'a','c','f'], 'B' :[3, 4, 2,10,3, 1], 'C':[np.nan, np.nan, np.nan, 12,13,14] })print(df.sort_values(by=['A','C']).ffill().sort_index())