pandas ffill基于另一栏中的条件

时间:2018-02-15 21:19:26

标签: python pandas dataframe

我有一个pandas DataFrame,如下所示。

custom:
  foo: ${ssm:foo}

我想使用Serverless Warning -------------------------------------- A valid SSM parameter to satisfy the declaration 'ssm:foo' could not be found. 来转发填充df = pd.DataFrame({ 'date': ['2011-01-01', '2011-01-01', '2011-02-01', '2011-02-01', '2011-03-01', '2011-03-01', '2011-04-01', '2011-04-01'], 'category': [1, 2, 1, 2, 1, 2, 1, 2], 'rate': [0.5, 0.75, np.nan, np.nan, 1, 1.25, np.nan, np.nan] }) 的值,但我希望每个值也与相应的ffill相对应。如何让rate看起来像这样?:

category

1 个答案:

答案 0 :(得分:2)

使用groupby

df.groupby('category').ffill()

输出:

   category        date  rate
0         1  2011-01-01  0.50
1         2  2011-01-01  0.75
2         1  2011-02-01  0.50
3         2  2011-02-01  0.75
4         1  2011-03-01  1.00
5         2  2011-03-01  1.25
6         1  2011-04-01  1.00
7         2  2011-04-01  1.25

如果您有其他不希望填充NaN的列,那么您可以使用它来在费率列中填充NaN:

df['rate'] = df.groupby('category')['rate'].ffill()