我有以下代码,因此从data_current
我需要转到data_needed
。
我想我必须使用groupby
,smth。像:
data_needed=data_current['Code'].fillna(data_current.groupby('animal')['Code'])
但它确实没有用......
import pandas as pd
import numpy as np
data_current=pd.DataFrame({'animal':['rabbit','badger', 'hamster','badger'],'Code':['I-1','I-2','I-3',np.nan]})
data_current
data_needed=pd.DataFrame({'animal':['rabbit','badger', 'hamster','badger'],'Code':['I-1','I-2','I-3','I-2']})
data_needed
顺便说一句,如何在Stackoverflow问题中粘贴i-Python笔记本单元格/输出,以便所有人都能直接在此页面上看到输出?
答案 0 :(得分:1)
你可以通过动物分组#39;列,然后在'动物'上调用transform
列只能调用fillna
并传递参数method='ffill'
,这将填充任何NaN
值:
In [38]:
data_current['code'] = data_current.groupby('animal')['code'].transform(lambda x: x.fillna(method='ffill'))
data_current
Out[38]:
animal code
0 rabbit I-1
1 badger I-2
2 hamster I-3
3 badger I-2