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


相关推荐

  • pycharm安装第三方库_pycharm专业版下载

    pycharm安装第三方库_pycharm专业版下载1、安装支持python的IDEPycharm专业版;2、利用edu邮箱,免费注册获取license免费使用专业版。

    2022年8月26日
  • FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)

    FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24…)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。swscale主要用于在2个AVFrame之间进行转换。下面来看一个视频解码的简单例子,这个程序完成了对”北京移动开发者大会茶歇视频2.flv”(其实就是优酷上的一个普通视频)的解码工作,并将解码后的数据保存为原始数据文件(例如YUV420,YUV422,RGB24等等)。其中略去了很多的代码。注:完整代码在文章:100

    2022年7月16日
  • linux查看端口占用的命令_端口占用查看命令

    linux查看端口占用的命令_端口占用查看命令在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询netstat命令各个参数说明如下:  -t:指明显示TCP端口  -u:指明显示UDP端口  -l:仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)  -p:显示进程标识符和程序

    2022年7月27日
  • 电磁场与电磁波实验三 熟悉Mathematica软件在电磁场领域的应用

    电磁场与电磁波实验三 熟悉Mathematica软件在电磁场领域的应用假设一个铜环(或其他导电环)放在电磁铁的一极上。当电流接通时(如图中红色的电路颜色所示),环会飞离磁铁。随时间变化的磁场会在环内产生循环电流。这将不会发生,如果一个径向狭缝是通过环,从而防止任何电流循环。为了可视化,这个动作是用慢动作来显示的,圆盘在落回地面之前是停在半空中的。此demo展示了电偶极子或赫兹偶极子的电磁场、电场和磁场,相关的能量密度和坡印廷矢量分布。此demo可以改变直流或静态偶极场的偶极矩、频率和时间。该模型显示了极化正弦波的垂直电、磁分量。五、赫兹偶极子的电磁场。微信公众号创享日记。..

    2022年10月28日
  • 鞍点[通俗易懂]

    鞍点[通俗易懂]关于“鞍点”的说法网上讲的乱七八糟,因此我特…

    2022年8月2日
  • Modelsim 安装步骤详解

    Modelsim 安装步骤详解Modelsim安装步骤详解目录一、modelsim简述及下载1、简介及特点2、modelsim版本3、modelsim下载二、安装步骤详解三、注册简述四、总结与参考资料1、总结2、参考资料目录本篇文章主要对ModelsimSE版本安装步骤的介绍。一、modelsim简述及下载1、简介及特点简介modelsim是Mentor公司开发的优秀的HDL语言仿真软件。它能提供友好的仿真环境,采用单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术和单

    2022年5月10日

发表回复

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

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