Python - 应用用于在 Group by 组中填充 N/A 的函数

我有 2 列中缺少值的数据集,我想用上一个日期的前一行中的值填充它。因此,根据预定义和参考(在先前填充的行中预定义)的最后日期,存在Weight并且Height应该填充来自另一行的值,例如:CategoryWorkerID


数据示例:


Ind  Date       WorkerID  Category   Weight   Height   Kind_eat

1    31/12/17    E145-46     cat      2.35      0.6       1  

2    01/09/18    M147-50     cat      4.78      0.8       2

3    27/05/18    K178-56     dog      7.03      0.75      3

4    09/02/18    T106-20     mouse    NaN       NaN       1

5    18/03/19    M147-50     cat      NaN       NaN       2

6    25/03/19    K178-56     dog      NaN       NaN       3

7    04/01/17    T106-20     mouse    0.75      0.15      4

8    01/04/19    T156-10     dog      6.99      0.13      4

因此, NaNofWeight和Height列应根据Weight,Height列参考NaN上一个可用日期的非值填充,该日期在 中的实际值之前Date。


例如,


5    18/03/19    M147-50     cat      NaN       NaN       2

应该由Weight和Height来自line2:


5    18/03/19    M147-50     cat      4.78      0.8       2

我试图通过group-by和fillna方法来做到这一点group,但它没有填满任何东西。


df.groupby(['Date','WorkerID'], as_index = False).apply(lambda group: group.ffill())

我也尝试使用: df.groupby(['Date','WorkedID']).ffill().reindex(df.columns, axis=1)


实际结果是: - 没有正确填充 NaN


Ind  Date       WorkerID  Category   Weight   Height   Kind_eat

1    31/12/17    E145-46     cat      2.35      0.6       1  

2    01/09/18    M147-50     cat      4.78      0.8       2

3    27/05/18    K178-56     dog      7.03      0.75      3

4    09/02/18    T106-20     mouse    NaN       NaN       1

5    18/03/19    M147-50     cat      NaN       NaN       2

6    25/03/19    K178-56     dog      NaN       NaN       3

7    04/01/17    T106-20     mouse    0.75      0.15      4

8    01/04/19    T156-10     dog      6.99      0.13      4


我很感激任何想法。谢谢)


红颜莎娜
浏览 166回答 1
1回答

狐的传说

我认为你必须先转换Date 为datetime。df['Date'] = pd.to_datetime(df['Date'])并使用sort_values通过Date并groupby与['WorkerID', 'Category']随后ffill。df = df.sort_values('Date').groupby(['WorkerID', 'Category']).ffill().sort_index()df    WorkerID Category       Date  Weight  Height  Kind_eatInd                                                       1    E145-46      cat 2017-12-31    2.35    0.60         12    M147-50      cat 2018-01-09    4.78    0.80         23    K178-56      dog 2018-05-27    7.03    0.75         34    T106-20    mouse 2018-09-02    0.75    0.15         15    M147-50      cat 2019-03-18    4.78    0.80         26    K178-56      dog 2019-03-25    7.03    0.75         37    T106-20    mouse 2017-04-01    0.75    0.15         48    T156-10      dog 2019-01-04    6.99    0.13         4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python