【问题标题】:Pandas:How to fill in value from the same column but different row熊猫:如何从同一列但不同的行填写值
【发布时间】:2020-08-03 19:21:02
【问题描述】:

我需要用来自同一列但来自不同行的值填写一列。

示例:下面是数据结构。

    fname   lname
0    bob    andy
1  manny  dorson
2    bob     NaN 

现在对于所有为 NaN 的“lname”值,我想用共享公共“fname”的行中的“lname”值填充这些值

所以没有“lname”的第三行我想从“fname”之后的第一行中选择“lname”两行都是一样的。 我期望的结果:

    fname   lname
0    bob    andy
1  manny  dorson
2    bob     andy 

这只是一个简单的缩小示例。 比方说,如果有多个匹配名字的行,我们可以选择第一个。 我尝试了很多东西,但没有让它发挥作用。 任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: python python-3.x pandas data-science


    【解决方案1】:

    使用groupbyffill

    #To fill the NaN's with last value of group
    df['lname'] = df.groupby('fname', as_index=False)['lname'].ffill()
    

    #To fill the NaN's with first value of group
    df['lname'] = (df['lname'].fillna(df.groupby('fname')['lname']
                                        .transform('first')))
    

    【讨论】:

    • 谢谢@sandeep。第一个解决方案有效(它填充了最后一个匹配的值,但不是第一个)。第二种解决方案抛出“TypeError:Transform function invalid for data types”
    • @ShadabAnsari 现在,第一个解决方案用最后一个值填充,第二个解决方案用第一个值填充。检查更新的代码。如果它解决了您的问题,也可以投票。
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    相关资源
    最近更新 更多