微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫如何从另一行插入值

如何解决熊猫如何从另一行插入值

我有一个数据框:

import pandas as pd
data = {'fruit': ['pear','pear','banana','apple','cherry','cherry'],'fruit_type': ['unkNown','unkNown','unkNown'],'country': ['unkNown','usa','ghana','russia','albania','id': ['011','011','6','6'],'month': ['unkNown','march','january','unkNown']       
}
df = pd.DataFrame(data,columns = ['fruit','fruit_type','country','id','month'])

enter image description here

我想用 id 为每个组的另一行的值填充未知的行:

如果我们在 unkNown 组中的第一个 month 列中有一个 id 值,我们需要从下一行插入 unkNown 值>

如果 unkNown 列中的 month 值不在 id 组中的第一个位置,我们需要插入前一行的 unkNown

有人能看到问题吗?

输出数据帧:

enter image description here

解决方法

unknown 替换为缺失值,然后每组向前和向后缺失值:

f = lambda x: x.ffill().bfill()
df = df.replace('unknown',np.nan).groupby(df['id']).transform(f)
print (df)
    fruit fruit_type  country   id    month
0    pear       pear      usa  011    march
1    pear       pear      usa  011    march
2  banana       pear      usa  011    march
3    pear       pear      usa  011    march
4    pear       pear    ghana  011  january
5   apple       pear    ghana  011  january
6   apple      apple   russia  011    march
7  cherry     cherry  albania    6  january
8  cherry     cherry  albania    6  january
,

使用 replace() 将 'unknown' 替换为 NaN,然后 groupby 'id',然后向前填充,然后向后填充,最后将结果分配回 df:

df=df.replace('unknown',float('nan'))
#If above replace doesn't work then use:
#df=df.replace('unknown',float('nan'),regex=True)
df=df.groupby('id').apply(lambda x:x.ffill().bfill())

df 的输出:

   fruit    fruit_type  country     id      month
0   pear    pear        usa         011     march
1   pear    pear        usa         011     march
2   banana  pear        usa         011     march
3   pear    pear        usa         011     march
4   pear    pear        ghana       011     january
5   apple   pear        ghana       011     january
6   apple   apple       russia      011     march
7   cherry  cherry      albania     6       january
8   cherry  cherry      albania     6       january

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?