我有一个化学专栏,有时我会改变它们。我想填充直到“改变点”并在它之后填充。
我有几个像这样的改变点:
date0 NaN
date1 chem1
date2 NaN
date3 NaN
date4 change
date5 NaN
date6 chem2
date7 chem2
date8 NaN
date9 change
date10 NaN
date11 chem3
date12 NaN
我想要它:
date0 chem1
date1 chem1
date2 chem1
date3 chem1
date4 change
date5 chem2
date6 chem2
date7 chem2
date8 chem2
date9 change
date10 chem3
date11 chem3
date12 chem3
关于这里的最佳方法有什么建议吗?
最佳答案
假设“col”是您的第二列,请使用自定义组:
df['col'] = df.groupby(df['col'].eq('change').cumsum())['col'].apply(lambda s:s.bfill().ffill())
输出;
date col
0 date0 chem1
1 date1 chem1
2 date2 chem1
3 date3 chem1
4 date4 change
5 date5 chem2
6 date6 chem2
7 date7 chem2
8 date8 chem2
9 date9 change
10 date10 chem3
11 date11 chem3
12 date12 chem3
关于Pandas ffill 和 bfill 在同一列中 - 有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72713248/