每组中的先前值填充有缺失值

时间:2019-05-17 09:35:05

标签: pandas

如果有三列数据,第一列是某个类别ID,第二列和第三列都有一些缺失值,我想汇总第一列的ID,分组后填写第三列每个组的方法如下:“填充”缺失值

我在这里找到了一个好主意:Pandas: filling missing values by weighted average in each group! ,但这并不能解决我的问题,因为它产生的输出不是我想要的

输入以下代码以获取示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'name': ['A','A', 'B','B','B','B', 'C','C','C'],'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3],
              'sss':[1, np.nan, 3, np.nan, np.nan, np.nan, 2, np.nan, np.nan]})
Out[13]:
    name    value   sss
0   A      1.0     1.0
1   A      NaN     NaN
2   B      NaN     3.0
3   B      2.0     NaN
4   B      3.0     NaN
5   B      1.0     NaN
6   C      3.0     2.0
7   C      NaN     NaN
8   C      3.0     NaN

分组后用先前的值填充缺失的值

然后我运行了以下代码,但是输出了奇怪的结果:

df["sss"] = df.groupby("name").transform(lambda x: x.fillna(axis = 0,method = 'ffill'))
df
Out[13]:
    name    value   sss
0   A      1.0     1.0
1   A      NaN     1.0
2   B      NaN     NaN
3   B      2.0     2.0
4   B      3.0     3.0
5   B      1.0     1.0
6   C      3.0     3.0
7   C      NaN     3.0
8   C      3.0     3.0

我想要的结果是:

Out[13]:
    name    value   sss
0   A      1.0     1.0
1   A      NaN     1.0
2   B      NaN     3.0
3   B      2.0     3.0
4   B      3.0     3.0
5   B      1.0     3.0
6   C      3.0     2.0
7   C      NaN     2.0
8   C      3.0     2.0

有人可以指出我错了吗?强文本

0 个答案:

没有答案