首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据可用值填充缺少的列值

根据可用值填充缺少的列值
EN

Stack Overflow用户
提问于 2021-10-06 05:29:35
回答 1查看 49关注 0票数 1

当每个农场有1-4个品种,但不能是同一个农场中具有相同的variety指数的两个品种时,如何从同列中填充缺失的ripening值?假设列包含所有可能的方案。

例如,在下面的样本中,“帝国”和“蜂蜜脆”具有相同的ripening,但它们来自不同的农场。

一个示例df (较大数据帧的一部分):

代码语言:javascript
复制
df = pd.DataFrame(
        {'farm':   [419,382, 382, 382, 411, 411, 411],
         'variety': ['Gala', 'Gala', 'Empire', '', 'Honeycrisp', '', 'Fuji'],
         'ripening':[2,2,3,3,3,3,6],
         'D': np.random.randn(7)*10,
         'E': list('abcdefg')
         }
     )

df
Out[223]: 
   farm      variety  ripening          D  E
0    419        Gala         2  12.921246  a
1    382        Gala         2  -2.776150  b
2    382      Empire         3   3.551226  c
3    382                     3   2.715187  d
4    411  Honeycrisp         3 -13.557640  e
5    411                     3 -11.525100  f
6    411        Fuji         6  -3.660661  g

我想要的输出:

代码语言:javascript
复制
   farm      variety  ripening          D  E
0    419        Gala         2  12.921246  a
1    382        Gala         2  -2.776150  b
2    382      Empire         3   3.551226  c
3    382      Empire         3   2.715187  d
4    411  Honeycrisp         3 -13.557640  e
5    411  Honeycrisp         3 -11.525100  f
6    411        Fuji         6  -3.660661  g
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-06 05:40:50

使用:

代码语言:javascript
复制
#create NaNs instead empty strings
df['variety'] = df['variety'].replace('', np.nan)

#test if only 1 unique category per ripening and farm
m = m = df.groupby(['farm','ripening'])['variety'].transform('nunique').eq(1)

#only for filtered rows forward filling values per groups
df.update(df[m].groupby(['farm','ripening'])['variety'].ffill())
print (df)
   farm     variety  ripening          D  E
0   419        Gala         2 -12.571434  a
1   382        Gala         2   1.839992  b
2   382      Empire         3  18.946881  c
3   382      Empire         3   6.552552  d
4   411  Honeycrisp         3  11.755782  e
5   411  Honeycrisp         3  11.272973  f
6   411        Fuji         6   7.416918  g
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69460270

复制
相关文章

相似问题

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