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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 删除多选框选中商品的内容_快速选择工具怎么删除选中部分吗

    删除多选框选中商品的内容_快速选择工具怎么删除选中部分吗多选框定义多选框的出现时将商品循环多次出现,这里用到了el表达式和jstl标签库的foreEach标签,注意input框加上class属性,并加上存有id的属性value:forEachitems=”${productList}”var=”product”varStatus=”vs”>type=”checkbox”class=”check_pid”name=”pid”

    2025年5月31日
    2
  • UDP服务recvfrom函数设置非阻塞

    UDP服务recvfrom函数设置非阻塞本文先介绍我查看了的2篇文章,然后介绍linux和windows下的非阻塞设置。最后是非阻塞情况下接收情况的判断。2篇博文其实UDP的非阻塞也可以理解成和TCP是一样的,都是通过socket的属性去做。方法一:通过fcntl函数将套接字设置为非阻塞模式。方法二:通过套接字选项SO_RECVTIMEO设置超时。https://blog.csdn.net/daiyudong20…

    2022年7月23日
    97
  • 项目范围管理「建议收藏」

    项目范围管理「建议收藏」1、项目范围管理要做好以下三方面工作:1)明确项目边界2)对项目执行工作进行监控3)防止项目范围发生蔓延2、项目的范围基准是经过批准的项目范围说明书、WBS和WBS字典。判断项目是否完成要以范

    2022年8月2日
    6
  • 深入db4o

    深入db4o这是RickGrehan发表在TheServerSide上的一篇关于面向对象数据库–db4o的文章,较全面地介绍了db4o的关键特性,希望对大家认识db4o能有所帮助。(2007.12.07最后更新)   db4o-针对对象的数据库-是一个完全的对象数据库;它以使对象在其生命周期中-无论是在数据库内或是在外-都保持着它们的本性这样一种方式操纵对象。不论类的复杂性如何,对象的内容,结构

    2022年7月21日
    16
  • goland 2022 永久激活码_在线激活2022.03.13「建议收藏」

    (goland 2022 永久激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月2日
    2.9K
  • 什么是SOA架构?为什么使用SOA架构?「建议收藏」

    什么是SOA架构?为什么使用SOA架构?「建议收藏」SOA架构简介面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互**SOA具有以下五个特征**1.可重用;2.松耦合;3.明确定义的接口;…

    2022年6月24日
    30

发表回复

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

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