从pandas中的另一行替换缺失值

时间:2018-05-06 00:13:06

标签: python pandas dataframe

我有一个包含2列的Pandas DataFrame。

enter image description here

我用NaN代替''用fillna等处理得更快..:

themes = themes.apply(lambda x: x.str.strip()).replace('', np.nan)

如何用其他行的匹配值替换NaN?

2 个答案:

答案 0 :(得分:4)

groupbyffill

需要bfill
themes.groupby('code').apply(lambda x : x.ffill().bfill())

答案 1 :(得分:2)

一种方法是在删除空值后创建一个系列。

然后将pd.Series.fillnapd.Series.map

一起使用
df = pd.DataFrame({'code': [1, 2, 3, 1, 2, 4],
                   'name': ['A', np.nan, 'C', np.nan, 'B', 'D']})

s = df.set_index('code')['name'].dropna()
df['name'] = df['name'].fillna(df['code'].map(s))

print(df)

   code name
0     1    A
1     2    B
2     3    C
3     1    A
4     2    B
5     4    D