Gau*_*sal 6 python dataframe pandas
我有一个熊猫DataFrame,如下所示。
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]
})
Run Code Online (Sandbox Code Playgroud)
我想使用ffill前向填充的值rate,除了我希望每个值也要对应于适当的值category。我如何df看起来像这样?:
df
category date rate
1 2011-01-01 0.50
2 2011-01-01 0.75
1 2011-02-01 0.50
2 2011-02-01 0.75
1 2011-03-01 1.00
2 2011-03-01 1.25
1 2011-04-01 1.00
2 2011-04-01 1.25
Run Code Online (Sandbox Code Playgroud)
Sco*_*ton 12
使用groupby:
df.groupby('category').ffill()
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
如果您有其他不想填充 NaN 的列,那么您可以使用它来填充速率列中的 NaN:
df['rate'] = df.groupby('category')['rate'].ffill()
Run Code Online (Sandbox Code Playgroud)