我有一个如下所示的表(比率列是根据代号和日期从另一个表合并的):
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
A 得到 0.5,因为这是它唯一的值。 B 保持为空,因为它没有比率。 C 在 2 月份填充了 0.6,因为那是 1 月份的值,但它的 4 月份的值是 0.7,因为那是 3 月份的值。
最佳答案
您可以使用.fillna()
填充 NaN
值,其 method
参数允许您向前或向后填充。在本例中,我们希望按代号
进行分组,以确保我们不会填写不同的名称。
假设您的数据框名为 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
关于pandas - 有条件地用其他行值填充空行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006458/