gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:04 26 4
gpt4 key购买 nike

我的数据集在 2 列中有缺失值,我想用上一个日期前几行中的值填充它。因此,WeightHeight 应该根据预定义的 Category 的最后日期和引用 填充来自另一行的值code>WorkerID(在前面填写的行中预定义),例如:

数据示例:

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

因此,WeightHeight 列的 NaN 应根据 Weight 进行填充,引用非 NaN 值的高度 列是在 Date 中的实际值之前的最后一个可用日期。

例如,

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

应由 line2 中的 WeightHeight 填充:

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

我尝试通过 group-byfillna 方法为 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

预期结果应该是:

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 0.75 0.15 1
5 18/03/19 M147-50 cat 4.78 0.8 2
6 25/03/19 K178-56 dog 7.03 0.75 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

如果有任何想法,我将不胜感激。谢谢)

最佳答案

我认为您必须先将 Date 转换为 datetime

df['Date'] = pd.to_datetime(df['Date'])

并使用 sort_valuesDategroupby['WorkerID', 'Category'] 然后 填充

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

关于Python - 应用函数在 Group by 组中填充 N/A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com