如何解决熊猫如何从另一行插入值
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'])
我想用 id
为每个组的另一行的值填充未知的行:
如果我们在 unkNown
组中的第一个 month
列中有一个 id
值,我们需要从下一行插入 unkNown
值>
如果 unkNown
列中的 month
值不在 id
组中的第一个位置,我们需要插入前一行的 unkNown
值
有人能看到问题吗?
输出数据帧:
解决方法
将 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 举报,一经查实,本站将立刻删除。