我有一个包含2列的Pandas DataFrame。
我用NaN代替''用fillna等处理得更快..:
themes = themes.apply(lambda x: x.str.strip()).replace('', np.nan)
如何用其他行的匹配值替换NaN?
答案 0 :(得分:4)
groupby
和ffill
bfill
themes.groupby('code').apply(lambda x : x.ffill().bfill())
答案 1 :(得分:2)
一种方法是在删除空值后创建一个系列。
然后将pd.Series.fillna
与pd.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