python中fillna_python – 使用groupby的Pandas fillna

python中fillna_python – 使用groupby的Pandas fillna我试图使用具有相似列值的行来估算值.例如,我有这个数据帧one|two|three111011nan11nan12nan122012nan13nan13nan我想使用列[‘one’]和[‘two’]的键,这是相似的,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我试图使用具有相似列值的行来估算值.

例如,我有这个数据帧

one | two | three

1 1 10

1 1 nan

1 1 nan

1 2 nan

1 2 20

1 2 nan

1 3 nan

1 3 nan

我想使用列[‘one’]和[‘two’]的键,这是相似的,如果列[‘three’]不完全是nan,那么从列中的值为一行类似键的现有值’3′]

这是我的愿望结果

one | two | three

1 1 10

1 1 10

1 1 10

1 2 20

1 2 20

1 2 20

1 3 nan

1 3 nan

您可以看到键1和3不包含任何值,因为现有值不存在.

我尝试过使用groupby fillna()

df[‘three’] = df.groupby([‘one’,’two’])[‘three’].fillna()

这给了我一个错误.

我尝试了向前填充,这给了我相当奇怪的结果,它向前填充第2列.我正在使用此代码进行前向填充.

df[‘three’] = df.groupby([‘one’,’two’], sort=False)[‘three’].ffill()

感谢您的时间.

解决方法:

如果每组只有一个非NaN值,则每组使用ffill(向前填充)和bfill(向后填充),因此需要使用lambda:

df[‘three’] = df.groupby([‘one’,’two’], sort=False)[‘three’]

.apply(lambda x: x.ffill().bfill())

print (df)

one two three

0 1 1 10.0

1 1 1 10.0

2 1 1 10.0

3 1 2 20.0

4 1 2 20.0

5 1 2 20.0

6 1 3 NaN

7 1 3 NaN

但是如果每组多个值并且需要用一些常数替换NaN – 例如按组表示:

print (df)

one two three

0 1 1 10.0

1 1 1 40.0

2 1 1 NaN

3 1 2 NaN

4 1 2 20.0

5 1 2 NaN

6 1 3 NaN

7 1 3 NaN

df[‘three’] = df.groupby([‘one’,’two’], sort=False)[‘three’]

.apply(lambda x: x.fillna(x.mean()))

print (df)

one two three

0 1 1 10.0

1 1 1 40.0

2 1 1 25.0

3 1 2 20.0

4 1 2 20.0

5 1 2 20.0

6 1 3 NaN

7 1 3 NaN

标签:python,pandas

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170021.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java8 stream 之groupingBy() 分组排序

    Java8 stream 之groupingBy() 分组排序ListmatchsList=newArrayList();Map>MatchsListMap=matchsList.stream().collect(Collectors.groupingBy(Matchs::getMatchDate));此时MatchsListMap的排序规则是根据MatchDate降序的(默认),也就是说ma

    2022年8月20日
    51
  • jsp页面数据格式化

    jsp页面数据格式化本来以为数据格式化很简单 但是在今天的工作中发现自己确实有很多的不足 由于系统分模块开发 导致了 jsp 页面的 el 表达式 struts2 标签 以及页面样式的不同 让我经历了 3 个不同的页面格式化阶段 一 页面 js 的数据格式化 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 工作项目中用到的是 easyui 的页面 nbsp nbsp nbsp nbsp nbsp nbsp 金额格式化 varDM digit 2 小数点位

    2025年9月16日
    4
  • python fabric实现远程操作和部署

    python fabric实现远程操作和部署

    2021年12月2日
    49
  • Android 获取手机分辨率「建议收藏」

    Android 获取手机分辨率「建议收藏」方法一DisplayMetricsdm=newDisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);Strings=”屏幕的分辨率为:”+dm.widthPixels+”*”+dm.heightPixels;这种方法获取的屏幕高度不包含导航栏高度例如,在一部分辨率为1280×720带虚拟

    2022年8月13日
    11
  • 分享一个好用的Python在线编辑器

    分享一个好用的Python在线编辑器原文:https://lwebapp.com/zh/python-online需求有小伙伴可能听说过PyScript,知道了Python可以通过打包成wasm运行在浏览器端了,这样做一些需要Python来做的功能,可以直接在浏览器完成,无需和服务器交互,打开了开发者的想象力。这里我们要推荐的是一个在线工具,也是支持Python代码的执行,一个在线的Python代码编辑器Python在线编辑器地址:https://lwebapp.com/zh/python-playground如何使用Py

    2022年8月14日
    4
  • file_put_contents () failed to open stream: Permission denied 解决办法

    file_put_contents () failed to open stream: Permission denied 解决办法

    2021年11月7日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号