我有一个像这样的DataFrame:

import numpy as np

raw_data = {'surface': [np.nan, np.nan, 'round', 'square'],
            'city': ['San Francisco', 'Miami', 'San Francisco', 'Miami']}

df = pd.DataFrame(raw_data, columns = ['surface', 'city'])


看起来像这样:

        surface city
   0    NaN     San Francisco
   1    NaN     Miami
   2    round   San Francisco
   3    square  Miami


我需要旧金山行的最早实例用“圆形”填充,而迈阿密较早的行需要用“方形”填充。使用.fillna(method ='bfill')不会考虑其他列值,而只会用回合填充所有较早的行。

结果将是:

        surface city
   0    round   San Francisco
   1    square  Miami
   2    round   San Francisco
   3    square  Miami

最佳答案

您可以使用groupby.bfill;按城市列对数据框进行分组,然后使用bfill

df.groupby('city').bfill()

#  surface           city
#0  round   San Francisco
#1  square          Miami
#2  round   San Francisco
#3  square          Miami

关于python - 当值与另一列匹配时,回填 Pandas 系列中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43839154/

10-12 18:12