我有一个像这样的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/