为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2022-01-05 13:15:25
我有 2 列中缺少值的数据集,我想用上一个日期的前一行中的值填充它。因此,根据预定义和参考(在先前填充的行中预定义)的最后日期,存在Weight并且Height应该填充来自另一行的值,例如:CategoryWorkerID数据示例:Ind  Date       WorkerID  Category   Weight   Height   Kind_eat1    31/12/17    E145-46     cat      2.35      0.6       1  2    01/09/18    M147-50     cat      4.78      0.8       23    27/05/18    K178-56     dog      7.03      0.75      34    09/02/18    T106-20     mouse    NaN       NaN       15    18/03/19    M147-50     cat      NaN       NaN       26    25/03/19    K178-56     dog      NaN       NaN       37    04/01/17    T106-20     mouse    0.75      0.15      48    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)实际结果是: - 没有正确填充 NaNInd  Date       WorkerID  Category   Weight   Height   Kind_eat1    31/12/17    E145-46     cat      2.35      0.6       1  2    01/09/18    M147-50     cat      4.78      0.8       23    27/05/18    K178-56     dog      7.03      0.75      34    09/02/18    T106-20     mouse    NaN       NaN       15    18/03/19    M147-50     cat      NaN       NaN       26    25/03/19    K178-56     dog      NaN       NaN       37    04/01/17    T106-20     mouse    0.75      0.15      48    01/04/19    T156-10     dog      6.99      0.13      4我很感激任何想法。谢谢)
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

我认为你必须先转换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_eat

Ind                                                       

1    E145-46      cat 2017-12-31    2.35    0.60         1

2    M147-50      cat 2018-01-09    4.78    0.80         2

3    K178-56      dog 2018-05-27    7.03    0.75         3

4    T106-20    mouse 2018-09-02    0.75    0.15         1

5    M147-50      cat 2019-03-18    4.78    0.80         2

6    K178-56      dog 2019-03-25    7.03    0.75         3

7    T106-20    mouse 2017-04-01    0.75    0.15         4

8    T156-10      dog 2019-01-04    6.99    0.13         4


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信