首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在python中使用groupby语句填充in

如何在python中使用groupby语句填充in
EN

Stack Overflow用户
提问于 2017-11-11 00:15:48
回答 3查看 3K关注 0票数 2

我正在尝试填充我的数据帧中缺少的值。但是,我想用groupby语句填充缺少的列。所以这是我的数据帧的样子...

代码语言:javascript
代码运行次数:0
运行
复制
Number    Other
1435       NaN
1435       NaN
1435       COOL
1817       NaN
1817       YES

所以我想要做的基本上就是取最大值或具有数据的最后一个值,并用该值填充该特定数字的na……例如,对于1435,我想要按数字对其进行分组,然后在该列中查找max(),这样它就会发现很酷,然后用酷填充另一列中的所有NaN。我的最终数据帧将如下所示

代码语言:javascript
代码运行次数:0
运行
复制
Number    Other
1435       COOL
1435       COOL
1435       COOL
1817       YES
1817       YES

到目前为止我已经尝试过的东西。

代码语言:javascript
代码运行次数:0
运行
复制
df["Number"] = df["Number"].fillna(value=df.groupby(['Number'])["Other"].max())

以及

代码语言:javascript
代码运行次数:0
运行
复制
df["Number"] = df["Number"].fillna(value=df.groupby(['Number'])["Other"].last())

我认为我需要做的是对它们进行排序,然后使用last来获得值,但我似乎不知道如何做到这一点并返回我正在寻找的结果。任何帮助都将不胜感谢。

EN

回答 3

Stack Overflow用户

发布于 2017-11-11 02:50:54

看起来你真正想要的就是groupby + bfill

代码语言:javascript
代码运行次数:0
运行
复制
df['Other'] = df.groupby('Number').Other.bfill()
df

   Number Other
0    1435  COOL
1    1435  COOL
2    1435  COOL
3    1817   YES
4    1817   YES
票数 3
EN

Stack Overflow用户

发布于 2017-11-11 02:53:41

我认为这和这里所说的问题是一样的:

Pandas Fill NA with Group Value如果您希望使用最常用的值,则可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
df = pd.DataFrame([[1435, np.nan],
                   [1435, 'YES'],
                   [1435, np.nan],
                   [1435, 'COOL'],
                   [1435, 'COOL'],
                   [1817, np.nan],
                   [1817, 'YES']],
                   columns=['Number', 'Other'])

df['Other'] = df.groupby('Number').transform(lambda x: x.fillna(x.value_counts().index[0]))

这将导致

代码语言:javascript
代码运行次数:0
运行
复制
    Number  Other
0   1435    COOL
1   1435    YES
2   1435    COOL
3   1435    COOL
4   1435    COOL
5   1817    YES
6   1817    YES

因此,将groupby、transform和fillna方法结合起来。

票数 1
EN

Stack Overflow用户

发布于 2017-11-11 00:20:36

要使用最后一个可用值填充,请尝试,

代码语言:javascript
代码运行次数:0
运行
复制
df["Number"]=df["Number"].bfill()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47227002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档