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


相关推荐

  • python语法(二)——截取字符串的方法详解

    python语法(二)——截取字符串的方法详解下面是基于python2+版本;python3+print输出的内容要加括号str=’0123456789’printstr[0:3]#截取第一位到第三位的字符printstr[:]#截取字符串的全部字符printstr[6:]#截取第七个字符到结尾printstr[:-3]#截取从头开始到倒数第三个字符之前printstr[2]#截取第三个字符printstr[-1]…

    2022年5月10日
    42
  • NFS修改2049端口号

    NFS修改2049端口号欢迎大家搜素微信公众号“东面而视”,分项技术及讨论技术《什么是NFS》   就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录内的数据。(一般共享视频,图片等静态数据) 为什么修改NFS的2049端口1. 其他服务再用2049端口2. 由于某些规定(如端口号必须在10000以上)修改方法1. 检查LINUX是否按装NFS[root@CT5_6-32-22…

    2022年6月27日
    29
  • cmd命令ping不是内部或外部命令_ping命令次数

    cmd命令ping不是内部或外部命令_ping命令次数介绍ping命令是一个用来测试能不能与另一台主机交换数据包的命令,通常我们会用ping命令测试域名可达性。1.语法:ping+ip(v4)或者域名实例一:通过ping百度域名,以此来看网络是否正常连接@echooffpingwww.baidu.com>nuliferrorlevel0(echo网络连接正常)elseecho网络连接异常pauseexit2.参数,可调出cmd窗口输入ping/?列出具体的参数介绍几个常用的参数:1.ping/t一直ping一

    2022年9月22日
    3
  • 汉宫秋月曲谱_离人愁简谱

    汉宫秋月曲谱_离人愁简谱喜欢古风的朋友赶快凑过来啦,最近抖音上超火的离人愁拇指琴教学,喜欢离人愁的小姐姐小哥哥赶快学起来啦!以下琴谱适用于HughTraceyG调17键。南非琴出厂调音是G调排列,习惯了C调音阶排列的朋友可能对G调排列不是很适应。因为两者琴键对应的“数字音贴”位置不同。两者曲子的演奏效果会有所不同。考虑到大部分人习惯C调音阶排列,所以文章内分享的曲谱适用于C调17键。(PS适合经常使用拇指琴的小可爱,…

    2022年8月29日
    2
  • PLSQL的使用「建议收藏」

    PLSQL的使用「建议收藏」PLSQL这个工具专门为oracle开发的(它只能连接oracle数据库)很多工具都可以连接oracle数据库(常用的有navicat、toad、plsql等)1.1 初次登录PLSQL

    2022年7月3日
    40
  • mapminmax 用法「建议收藏」

    mapminmax 用法「建议收藏」mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

    2022年6月30日
    37

发表回复

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

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