gpt4 book ai didi

python - 使用其他已知列值的 Pandas Dataframe fillna()

转载 作者:行者123 更新时间:2023-11-28 22:17:55 25 4
gpt4 key购买 nike

给定以下示例 df:

   Other1  Other2     Name Value
0 0 1 Johnson C
1 0 0 Johnson NaN
2 1 1 Smith R
3 1 1 Smith NaN
4 0 1 Jackson X
5 1 1 Jackson NaN
6 1 1 Jackson NaN

我希望能够使用与该行中给定名称关联的 df['Value'] 值填充 NaN 值。我想要的结果如下,我知道可以这样实现:

df['Value'] = df['Value'].fillna(method='ffill')

Other1 Other2 Name Value
0 0 1 Johnson C
1 0 0 Johnson C
2 1 1 Smith R
3 1 1 Smith R
4 0 1 Jackson X
5 1 1 Jackson X
6 1 1 Jackson X

但是,如果名称后跟的顺序不一致,则此解决方案将无法达到预期的效果。我也无法按 df['Name'] 排序,因为顺序很重要。是否有一种有效的方法可以通过关联的名称值简单地填充给定的 NaN 值并将其分配给该值?

同样重要的是要注意,给定的名称将始终只有一个与之关联的值。提前谢谢你。

最佳答案

您应该使用groupbytransform:

df['Value'] = df.groupby('Name')['Value'].transform('first')
df

Other1 Other2 Name Value
0 0 1 Johnson C
1 0 0 Johnson C
2 1 1 Smith R
3 1 1 Smith R
4 0 1 Jackson X
5 1 1 Jackson X
6 1 1 Jackson X

Peter 的回答是不正确的,因为第一个有效值可能并不总是组中的第一个,在这种情况下,ffill 将用前一组的值污染下一组。

ALollz 的回答很好,但是 dropna 会产生一定程度的开销。

关于python - 使用其他已知列值的 Pandas Dataframe fillna(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50938988/

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