如果我有一个这样的数据框:
A
0 Ascent
1 NaN
2 NaN
3 Descent
4 NaN
5 Ascent
我该如何在单词之间填充,以使“上升”和“下降”之间的nan值填充为“之上”,而使“下降”和“上升”之间的nan值填充为“下面”。这样我就得到了这样的Pandas数据框:
A
0 'Ascent'
1 'Above'
2 'Above'
3 'Descent'
4 'Below'
5 'Ascent'
答案 0 :(得分:5)
我决定对fillna
和map
有点乐趣:
df
A
0 Ascent
1 NaN
2 NaN
3 Descent
4 NaN
5 Ascent
df['A'].fillna(df['A'].ffill().map({'Ascent':'Above', 'Descent': 'Below'}))
# Identical solution, different order of method calls,
# df['A'].fillna(df['A'].map({'Ascent':'Above', 'Descent': 'Below'}).ffill())
0 Ascent
1 Above
2 Above
3 Descent
4 Below
5 Ascent
Name: A, dtype: object