我有一个看起来像这样的表(比率列是根据代号和日期从另一个表合并的):
date codename ratio
2018-01-01 A .5
2018-02-01 A
2018-03-01 A
2018-01-01 B
2018-02-01 B
2018-01-01 C .6
2018-02-01 C
2018-03-01 C .7
2018-04-01 C
我需要使用给出的代号最新值
输出应为:
date codename ratio
2018-01-01 A .5
2018-02-01 A .5
2018-03-01 A .5
2018-01-01 B
2018-02-01 B
2018-01-01 C .6
2018-02-01 C .6
2018-03-01 C .7
2018-04-01 C .7
得到0.5,因为那是唯一的价值。 B保持空,因为它没有比率。 C填充了2月的.6,因为那是一月的值,但它的四月的值是0.7,因为那是三月的值。
答案 0 :(得分:2)
您可以使用.fillna()
来填充NaN
值,并且其method
参数可以使您向前或向后填充。在这种情况下,我们希望按codename
分组,以确保我们不会填写不同的名称。
假设您的数据帧称为df
:
df['ratio'] = df.groupby('codename')['ratio'].fillna(method='ffill')
应该做到这一点。打印df
之后,我们得到了答案:
date codename ratio
0 2018-01-01 A 0.5
1 2018-02-01 A 0.5
2 2018-03-01 A 0.5
3 2018-01-01 B NaN
4 2018-02-01 B NaN
5 2018-01-01 C 0.6
6 2018-02-01 C 0.6
7 2018-03-01 C 0.7
8 2018-04-01 C 0.7